JQuery.parseJSON无法使用字符串

我试图将字符串解析为一个对象。 我在以下链接中查看了jQueryparseJSON文档,我还包含了jquery库,所以我知道它不是那样的。

到目前为止这是我的代码

var str = "{'val1': 1, 'val2': 2, 'val3': 3}"; var obj = jQueryparseJSON( str ); alert(obj.val1); 

在Firebug中我收到以下错误:

 SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data 

我知道解决方案很可能非常简单,但我一再忽视它。

示例代码中的测试字符串无效JSON:

 var str = '{"val1": 1, "val2": 2, "val3": 3}'; var obj = jQuery.parseJSON( str ); alert(obj.val1); 

现在,如果您正在执行所有这些操作,因为某些服务正在将该对象作为JSON字符串提供,那么jQuery 可能会为您执行解析步骤。 如果您只是想在JavaScript代码中包含一个对象文字,那么就没有理由让JSON服务全部涉及:

 var obj = { val1: 1, val2: 2, val3: 3 }; 

创建一个对象。

请注意,JSON语法比JavaScript对象文字语法更严格。 JSON坚持使用双引号字符引用属性名称,当然值只能是数字,字符串,布尔值或null

您的字符串无效JSON。 对象键必须用双引号括起来,而不是单引号。

 var str = '{"val1": 1, "val2": 2, "val3": 3}'; var obj = jQuery.parseJSON(str); alert(obj.val1); 

DEMO

您的代码中有typo错误:

这里var obj = jQueryparseJSON( str );

应该是var obj = jQuery.parseJSON( str );

 function str2json (str, val, obj) { var obj = str.indexOf("'") != -1 ? JSON.parse(str.replace(/'/g, "\"")) : JSON.parse(str); return (val === undefined ? obj /* JSON.stringify(obj) */ : obj[val]) }; str2json("{'val1': 1, 'val2': 2, 'val3': 3}", "val1"); // `1` str2json("{'val1': 1, 'val2': 2, 'val3': 3}") // `obj` : `[object Object]` , // `JSON.stringify(obj)` : `{"val1":1,"val2":2,"val3":3}` 

jsfiddle http://jsfiddle.net/guest271314/n8jLG/