我在这里遇到了一些关于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};
答案 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;
你似乎没有。