Javascript 将对象字符串化为“获取”\&引用;

Javascript 将对象字符串化为“获取”\&引用;,javascript,json,stringify,Javascript,Json,Stringify,我正在尝试对另一个stringify对象进行stringify。我正在将\添加到内部对象 a = {} str = {'a': 'test'} a.str = JSON.stringify(str); console.log("=="+ (a)); console.log("strin " + JSON.stringify(a) ) // {"str":"{\"a\":\"test\&qu

我正在尝试对另一个stringify对象进行stringify。我正在将
\
添加到内部对象

a   = {}
str = {'a': 'test'}
a.str = JSON.stringify(str);

console.log("=="+  (a));
console.log("strin " + JSON.stringify(a) ) // {"str":"{\"a\":\"test\"}"}


expected:  {"str":"{"a":"test"}"}
有一个错误

str={'a':'test}

应该是

str={'a':'test'}

获取“”的原因很简单,因为它们正在转义双字符串

这是非法的:

“{”str:“{”a:“test”}”

这是合法的:


“{\“str\”:“{\“a\”:“test\”}”

您所期望的将不是有效的JSON

引号用于分隔JSON文本中的字符串

根据您的预期结果,JSON解析器将看到
“{
,并认为这是整个字符串,然后
a
将是一个错误

转义序列
\“
是您如何说“这是字符串的一部分的引号”,而不是“这是字符串结尾的引号”

输出正常,没有问题


这就是说,嵌套JSON通常是一个坏主意。它解析起来更复杂,阅读起来也更难

通常,您应该创建完整的数据结构,然后将其字符串化

const a={};
常量str={
“a”:“测试”
};
a、 str=str;
const json=json.stringify(a,null,2);

console.log(`result:${json}`);
额外的斜杠只是转义字符,您可以在本页的部分中了解更多有关它的信息,该部分看起来像是创建测试用例时的错误。这不是所问的问题,也不会导致所描述的问题。