JQuery.parseJSON无法使用字符串

时间:2014-07-14 16:54:44

标签: javascript jquery json string parsing

我正在尝试将字符串解析为对象。 我查看了以下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

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

4 个答案:

答案 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);

DEMO

答案 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}`

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

答案 3 :(得分:0)

您的代码中出现typo错误:

此处var obj = jQueryparseJSON( str );

应为var obj = jQuery.parseJSON( str );