将Javascript对象转换为JSON字符串

时间:2012-01-17 09:28:42

标签: javascript json

我想直接将javascript对象转换为字符串。我使用了以下代码。

var foo = {};  
foo.test1 = test1;  
foo.test2 = test2;  
foo.test3 = test3;  

var jsonObj = JSON.stringify(foo); 

它工作正常,但它使用json2 javascript库。但是我需要在普通的javascript中执行此操作而不使用任何库。我知道使用传递的参数创建json feed会像这样工作。

var jsonObj = "{\"test1\":\"" + test1+ "\",\"test2\":\"" + test2+ "\",\"test3\":\"" + test3+ "\"}";

但是,如果传递的参数(test1,test2和test3)包含双引号,则会出现问题。

实现这一目标的最佳方法是什么?

谢谢

2 个答案:

答案 0 :(得分:2)

您应该通过对每个键和成员执行String.replace(/"/g, "\\\"")来转义双引号。但是要使其工作,您需要保证JS对象中只有简单的字符串/数字。

仅供参考,应该注意的是json2库仅在不存在JSON的本机实现时使用; all modern browsers内置了JSON支持(IE< 8是值得注意的例外)。

答案 1 :(得分:1)

我认为你完全误解了JSON是什么。 JSON代表Javascript对象表示法。

你还没有意识到foo已经是一个对象了,你真的想过你要编码的内容jsonObj吗?

这是一个提示jsonObj.test1:看起来很熟悉,不是吗。

您可能要做的是创建一个看起来像JSON内容但实际上不是对象的字符串。这是一个不同的问题。

希望这有帮助。