Javascript 停止JSON.stringify添加转义字符

Javascript 停止JSON.stringify添加转义字符,javascript,json,Javascript,Json,我有一个目标 var obj = {}; 在那里我设置了一个属性 obj['prop'] = 'This is a "property"' 我怎么能停下来 JSON.stringify(obj) 从返回 "This is a \"property\"" 而不是回来 "This is a "property"" 理想情况下,有没有一种方法可以在我设置属性的地方实现这一点?i、 e obj['prop'] = 'This is a "property"' 如果您真的想要这样做,您可以使用

我有一个目标

var obj = {};
在那里我设置了一个属性

obj['prop'] = 'This is a "property"'
我怎么能停下来

JSON.stringify(obj)
从返回

"This is a \"property\""
而不是回来

"This is a "property""
理想情况下,有没有一种方法可以在我设置属性的地方实现这一点?i、 e

obj['prop'] = 'This is a "property"'

如果您真的想要这样做,您可以使用类似于
JSON.stringify(obj.replace(/\\\/g),)
的东西


注意:输出将不是有效的JSON,如果JSON中有任何“合法”反斜杠,则可能会发生数据丢失。

如果确实需要,可以使用类似于
JSON.stringify(obj).replace(/\\/g),)


小心:输出将不是有效的JSON,如果JSON中有任何“合法”反斜杠,则可能会发生数据丢失。

如注释中所述,您无法防止双引号(
)被转义,因为该字符是保留的(在规范中定义的)。您可以做的是使用变通方法:使用单个引号
引用文本中的内容

如果您仍然希望在此处看到双引号,那么这是很难实现的。将
'
替换为
是不够的,因为有些单词自然使用
。像
它是

constobj={};
obj['myKey']=“第一个单词是‘Hello World’”;
obj['anotherKey']=“第二个单词是‘Lorum Ispum’…”;

log(JSON.stringify(obj))如注释中所述,您无法阻止双引号(
)被转义,因为该字符是保留的(在规范中定义)。您可以做的是使用变通方法:使用单引号
在文本中引用某些内容

如果您仍然希望在此处看到双引号,那么这是很难实现的。将
'
替换为
是不够的,因为有些单词自然使用
。像
它是

constobj={};
obj['myKey']=“第一个单词是‘Hello World’”;
obj['anotherKey']=“第二个单词是‘Lorum Ispum’…”;

log(JSON.stringify(obj))
”。有效的JSON将在值中转义
字符。“它是函数”…?Soo…是Terraform正在解析JSON,还是您正在尝试在这里生成代码…?那么您并不是真的从…开始生成JSON…?另外:如果可以的话,为什么会有这样的要求?那么,你毕竟不想要有效的JSON?然后不要使用JSON序列化器。JSON规范保留定义键和值的
”。有效的JSON将在值中转义
字符。“它是函数”…?Soo…是Terraform正在解析JSON,还是您正在尝试在这里生成代码…?那么您并不是真的从…开始生成JSON…?另外:当然,这也会删除所有你可能实际上想要从数据中删除的“合法”反斜杠…是的,我也担心这一点,所以我可能不会就此结束route@db2791如果你能解释你为什么想要这个,我们也许能更好地帮助你…@JeffHuijsmans这是我必须使用的代码。Terraform使用结束文件,它要求函数中使用的任何双引号都不带转义字符。目标是以编程方式生成这些函数,但是,函数本身是在JSON中定义的,还是有其他程序可以获取JSON并将其放入Terraform?因为这样你可以在转义字符被送入Terraform之前删除它。当然,这也会删除你可能真正想要从数据中删除的所有“合法”反斜杠…是的,我也担心这一点,所以我可能不会就此结束route@db2791如果你能解释你为什么想要这个,我们也许能帮你更好……@杰夫惠杰斯曼,这是我必须使用的代码。Terraform使用结束文件,它要求函数中使用的任何双引号都不带转义字符。目标是以编程方式生成这些函数,但是,函数本身是在JSON中定义的,还是有其他程序可以获取JSON并将其放入Terraform?因为这样你可以在转义字符被送入地形之前移除它。