是否通过变量引用JS值与用于JSON解析目的的文字值引用不同?

时间:2012-04-20 09:55:02

标签: javascript json parsing

我在这里遇到了一些关于Facebook JS SDK的问题http://facebook.stackoverflow.com/questions/10243785/fb-ui-call-throws-json-parsing-error-serializing-then-deserializing-input-ob,但我在这里提出它是一个更通用的JSON问题。

如果我将以下javascript值序列化为JSON字符串,是否有任何情况或任何解析器会以不同方式对待它们?如果有任何解析器无法对b版本进行字符串化,我会特别感兴趣。

var value = {"value":"one"};
var a = {"data1":{"value":"one"},"data2":{"value":"one"}};
var b = {"data1":value,"data2":value};

2 个答案:

答案 0 :(得分:1)

Afaik:现代浏览器的默认JSON解析器正在“b字形化”b示例正确,因此对value的引用也是字符串化。

console.log('a: '+JSON.stringify(a));
console.log('b: '+JSON.stringify(b));
/* all browsers I know (for IE restriction is IE>7) show
a: {"data1":{"value":"one"},"data2":{"value":"one"}} 
b: {"data1":{"value":"one"},"data2":{"value":"one"}}
*/

答案 1 :(得分:1)

根据我的经验,JSON解析器不会因任何示例而失败 JSON解析器的主要威胁是循环引用,例如:

var object = {};
object.value = object;

你似乎没有。