$ .parseJSON()在有效对象上返回null

时间:2011-12-25 22:50:40

标签: jquery json parsing

jsfiddle link

var x = {
    "Item1" : 1,
    "Item2" : {
        "Item3" : 3
    }
}

   alert(JSON.stringify(x, undefined, 2));
   alert($.parseJSON(x));

首先警告有效对象。第二个警告null。在实际代码中,“x”变量可以是字符串或对象,因此我应该能够解析这两种类型。我错过了什么吗?

2 个答案:

答案 0 :(得分:9)

你正在解析一个对象。你解析字符串,而不是对象; jQuery.parseJSON只接受字符串。来自文档:

  jQuery.parseJSON(json)   
    
json
要解析的JSON字符串。
  

用法:

if (! window.console) {
    console = {
        log: function (msg) {
            alert(msg);
        }
    };
}

console.log($.parseJSON(JSON.stringify(x, undefined, 2)));

标准jQuery似乎没有JSON字符串。通常,jQuery会为您处理,因此没有必要。如果你需要它,有各种插件。

答案 1 :(得分:2)

试试这个:

var x = { "Item1" : 1, "Item2" : { "Item3" : 3 }};
var stringified = JSON.stringify(x, undefined, 2);
var objectified = $.parseJSON(stringified);

alert(stringified);
alert(objectified.Item1);
alert(JSON.stringify(objectified, undefined, 2););

如上所述,这将为解析器提供一个字符串来解析对象,而不是对象本身。

这是一个小提琴:http://jsfiddle.net/uaN8G/