我正在尝试将字符串解析为对象。 我查看了以下link中的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
我知道解决方案很可能非常简单,但我一再忽视它。
答案 0 :(得分:6)
示例代码中的测试字符串无效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
。
答案 1 :(得分:3)
您的字符串无效JSON。对象键必须用双引号括起来,而不是单引号。
var str = '{"val1": 1, "val2": 2, "val3": 3}';
var obj = jQuery.parseJSON(str);
alert(obj.val1);
答案 2 :(得分:0)
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}`
答案 3 :(得分:0)
您的代码中出现typo
错误:
此处var obj = jQueryparseJSON( str );
应为var obj = jQuery.parseJSON( str );