将Javascript对象转换为JSON字符串

将Javascript对象转换为JSON字符串,javascript,json,Javascript,Json,我想直接将javascript对象转换为字符串。我使用了以下代码 var foo = {}; foo.test1 = test1; foo.test2 = test2; foo.test3 = test3; var jsonObj = JSON.stringify(foo); 它工作正常,但使用JSON2JavaScript库。但是,我需要在不使用任何库的情况下在纯javascript中执行此操作。我知道使用传递的参数创建json提要的工作方式如下 var jsonObj

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

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

var jsonObj = JSON.stringify(foo); 
它工作正常,但使用JSON2JavaScript库。但是,我需要在不使用任何库的情况下在纯javascript中执行此操作。我知道使用传递的参数创建json提要的工作方式如下

var jsonObj = "{\"test1\":\"" + test1+ "\",\"test2\":\"" + test2+ "\",\"test3\":\"" + test3+ "\"}";
但是,如果传递的参数(test1、test2和test3)包含双引号,则会出现问题

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


谢谢

您应该通过对每个键和成员执行
字符串来转义双引号。替换(/“/g,\\\”)
。然而,要使其工作,您需要保证JS对象中只有简单的字符串/数字


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

您应该通过对每个键和成员执行
字符串来转义双引号。替换(/“/g,\\\”)
。然而,要使其工作,您需要保证JS对象中只有简单的字符串/数字


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

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

您没有意识到的是,
foo
已经是一个对象,而且您是否真的想过要编写什么代码来访问
jsonObj

这里有一个提示:看起来很熟悉,不是吗

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


希望这能有所帮助。

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

您没有意识到的是,
foo
已经是一个对象,而且您是否真的想过要编写什么代码来访问
jsonObj

这里有一个提示:看起来很熟悉,不是吗

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



希望这有帮助。

为什么你不能使用图书馆?特别是像json2.js这样的小而特殊的版本。事实上,你甚至可以将json2.js的缩小版本与其他代码放在一起,你不必将其保存在单独的文件中。如果你不打算支持非常旧的浏览器(或像2001年一样构建的浏览器),你不需要包含json2.js.我不想使用此im处理node.js之类的服务器端javascript库。因此,省略这种第三方库是非常必要的。@Dilshan:如果是服务器端JS,那么实现很有可能在本地支持
JSON.stringify
。node.js可以。为什么不能使用库?特别是像json2.js这样的小而特殊的版本。事实上,你甚至可以将json2.js的缩小版本与其他代码放在一起,你不必将其保存在单独的文件中。如果你不打算支持非常旧的浏览器(或像2001年一样构建的浏览器),你不需要包含json2.js.我不想使用此im处理node.js之类的服务器端javascript库。因此,省略这种第三方库是非常必要的。@Dilshan:如果是服务器端JS,那么实现很有可能在本地支持
JSON.stringify
。如果字符串包含新行,node.js将失败。为什么要在正则表达式中转义双引号?它们没有任何特殊的含义,因此只会增加行噪声。@Quentin:因为它以前是字符串,当我将它更改为正则表达式时,我忘记删除它;)是的,这个可以。但我需要一个更好的方法。难道没有像json2库函数那样直接转换的直接方法吗?我尝试在服务器端javascript中使用JSON.Stringify,但失败了。我使用的是最新的firefox版本。如果字符串包含新行,将失败。为什么要在正则表达式中转义双引号?它们没有任何特殊的含义,因此只会增加行噪声。@Quentin:因为它以前是字符串,当我将它更改为正则表达式时,我忘记删除它;)是的,这个可以。但我需要一个更好的方法。难道没有像json2库函数那样直接转换的直接方法吗?我尝试在服务器端javascript中使用JSON.Stringify,但失败了。我正在使用最新的firefox版本。是的,我正在尝试创建一个类似jsonso的字符串。我可以假设您不会像使用对象一样使用
jsonObj
?您只需将其打印到屏幕或其他地方?然后您根本不需要进行任何转换!字符串和对象不是一回事。如果你读了我的答案,你会意识到
foo===jsonObj
你甚至不需要创建
jsonObj
,因为你可以直接从
foo
读取属性。但如果您真的必须这样做,那么您所需要做的就是
var jsonObj=foo那么你就可以很高兴地阅读相同的属性,而不需要那些毫无意义的字符串。是的,我正在尝试创建一个类似于jsonso的字符串。那么我可以假设你不会像使用对象一样使用
jsonObj
?您只需将其打印到屏幕或其他地方?然后您根本不需要进行任何转换!字符串和对象不是一回事。如果你读了我的答案,你会意识到
foo===jsonObj
你甚至不需要创建
jsonObj
,因为你可以直接从
foo
读取属性。但如果你真的必须这么做,