1

为什么我无法解析 JSON 对象?我需要将它用引号括起来以便解析工作。

// JSON object
var foo = {"sayHi": {"nl":"hoi", "en":"hello"}};
alert(foo.sayHi.en);

// string       
var foo = '{"sayHi": {"nl":"hoi", "en":"hello"}}';      
alert(JSON.parse(foo).sayHi.nl);

编辑:

// does not work
var foo = {"sayHi": {"nl":"hoi", "en":"hello"}};
alert(JSON.parse(foo).sayHi.nl);

是的,两者都有效,但第一个 foo 不适用于 with 解析。而且我更喜欢第一个 foo,因为我不需要担心换行符、引号和加号。

编辑2:

我真的在寻找一种将 JSON 存储在变量中的好方法,而不是使用 ajax 调用来获取它。

4

2 回答 2

3

因为这{"sayHi": {"nl":"hoi", "en":"hello"}}已经是 js 对象了

'{"sayHi": {"nl":"hoi", "en":"hello"}}'只是一个字符串,包含任何内容,可能是 json

于 2013-03-06T13:39:08.270 回答
1

取决于“解析 JSON 对象”的含义(顺便说一句,这不是一件事;JSON是一个符号)。如果你想把它解析成一个对象,那么恭喜你,你完成了! JSON.parse使用 JSON(表示法)获取字符串并将其转换为 JavaScript 中的对象(但许多其他语言也可以解析 JSON 并将其转换为相应的数据结构)。

不过,您的两个代码片段都按预期工作。

于 2013-03-06T13:40:15.240 回答