Joh*_*ohn 17 javascript jquery serialization json
JSON.stringify将我的json对象转换为以下字符串
{\ "2003 \":{\ "1 \":{\ "2 \":[\ "测试\"],\ "3 \":[\ "TEST2 \"]}}}
什么时候不应该逃脱.结果应该是下面引用的字符串
{ "2003":{ "1":{ "2":[ "测试"], "3":[ "TEST2"]}}}
而不是使用所有转义引号的一般替换并删除可能在输入中的引号.如何设置JSON.stringify不要双重转义变量?
Eng*_*eer 35
您正在字符串化字符串,而不是对象:
var str = '{"2003":{"1":{"2":["test"],"3":["test2"]}}}';
var obj = {"2003":{"1":{"2":["test"],"3":["test2"]}}};
console.log( JSON.stringify(str) ); // {\"2003\":{\"1\":{\"2\":[\"test\"],\"3\":[\"test2\"]}}}
console.log( JSON.stringify(obj) ); // {"2003":{"1":{"2":["test"],"3":["test2"]}}}
Run Code Online (Sandbox Code Playgroud)
在浏览器的控制台中尝试这两个示例:
let obj = {2003:{1:{2:["test"],3:["test2"]}}};
JSON.stringify(obj);
-> "{\"2003\":{\"1\":{\"2\":[\"test\"],\"3\":[\"test2\"]}}}"
Run Code Online (Sandbox Code Playgroud)
和
let obj = {2003:{1:{2:["test"],3:["test2"]}}};
console.log(JSON.stringify(obj));
-> {"2003":{"1":{"2":["test"],"3":["test2"]}}}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,返回的字符串JSON.stringify都是有效的
在第一种情况下,您将“原始”字符串打印到以双引号开头和结尾的控制台,并且所有嵌套的双引号都需要转义(\"而不是")。JSON 验证器会将这个字符串标记为格式错误的 JSON,但它仍然可以解析为JSON.parse
在第二种情况下,您将字符串“解释”为 JSON by console.log。JSON 验证器会将其标记为有效的 JSON,但无法解析,JSON.parse因为它不是字符串(周围没有引号)