我想直接将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)包含双引号,则会出现问题。
实现这一目标的最佳方法是什么?
谢谢
答案 0 :(得分:2)
您应该通过对每个键和成员执行String.replace(/"/g, "\\\"")
来转义双引号。但是要使其工作,您需要保证JS对象中只有简单的字符串/数字。
仅供参考,应该注意的是json2
库仅在不存在JSON的本机实现时使用; all modern browsers内置了JSON支持(IE< 8是值得注意的例外)。
答案 1 :(得分:1)
我认为你完全误解了JSON是什么。 JSON代表Javascript对象表示法。
你还没有意识到foo
已经是一个对象了,你真的想过你要编码的内容jsonObj
吗?
这是一个提示jsonObj.test1
:看起来很熟悉,不是吗。
您可能要做的是创建一个看起来像JSON内容但实际上不是对象的字符串。这是一个不同的问题。
希望这有帮助。