如何将javascript对象转换为字符串?

时间:2012-03-19 09:59:49

标签: javascript json

我想将javascript对象转换为字符串,以便它可以在所有浏览器中使用

我使用object.toSource();将其转换为字符串。它只在firefox中运行正常。

在IE中显示

  

对象不支持此属性或方法

我用JSON.stringify(object);替换它,这次我得到一个错误"不支持值参数中的循环引用"。我不确定问题是什么。

当我使用object.toSource();

时,我得到了此输出

jJSON数据是

  

({test:[" 456","测试事件",(新日期(1332131400000)),(新的   日期(1332135000000))," 0",0,0," 16",1,"某些地方",   " ...............

我需要将此JSON数据转换为字符串.......

任何人都可以帮我这个吗? 感谢

3 个答案:

答案 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感兴趣。它可以解决“循环参考”。但它的文件是中文。