我想将javascript对象转换为字符串,以便它可以在所有浏览器中使用
我使用object.toSource();
将其转换为字符串。它只在firefox中运行正常。
在IE中显示
对象不支持此属性或方法
我用JSON.stringify(object);
替换它,这次我得到一个错误"不支持值参数中的循环引用"。我不确定问题是什么。
当我使用object.toSource();
jJSON数据是
({test:[" 456","测试事件",(新日期(1332131400000)),(新的 日期(1332135000000))," 0",0,0," 16",1,"某些地方", " ...............
我需要将此JSON数据转换为字符串.......
任何人都可以帮我这个吗? 感谢
答案 0 :(得分:6)
IE中不支持toSource()
方法;已知浏览器的JavaScript实现有些不同,这是其中一种情况。
JSON不能表示循环引用。这是循环引用的一个例子:
var a = {}, b = {a: a};
a.b = b;
// Now I can go a.b.a.b.a.b.a.b... forever; there's no way to represent this in JSON
您可能应该通过覆盖toString()来实现自己的序列化方法。如果你想坚持使用JSON,你将不得不删除循环引用。
答案 1 :(得分:1)
循环引用就是这样;你的对象中有一个循环引用。例如,想象一下js代码:
var a = {a: 'test'};
a.b = a;
现在我们想要字符串化。
我们从{"a":"test","b":
开始,然后我们看到a.b是一个对象,好吧,我们也会调用stringify,最后调用{"a":"test","b":{"a":"test","b":
等等。正如您可能看到的,此循环将永远不会结束,因此您有一个循环引用,无法以此方式序列化。
答案 2 :(得分:0)
您可能对JSONplus感兴趣。它可以解决“循环参考”。但它的文件是中文。