将Javascript对象转换为JSON字符串
我想直接将javascript对象转换为字符串。我使用了以下代码将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
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
读取属性。但如果你真的必须这么做,