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

问题描述:

我有一个对象,停止JSON.stringify从添加转义字符

var obj = {}; 

我在哪里设置属性

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

我怎样才能阻止

JSON.stringify(obj) 

从返回

"This is a \"property\"" 

,而是返回

"This is a "property"" 

理想的情况下,有没有办法做到这一点,我设置的属性?即

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

好,为什么会有这样的要求,我是否可以? – kukkuz

+0

那么,毕竟你不想要有效的JSON?然后不要使用JSON序列化程序。 – deceze

+0

JSON规范保留用于定义键和值的''',一个有效的JSON将会转义该值中的字符。 –

如果你确实需要这个,你可以使用类似JSON.stringify(obj).replace(/\\/g,'')的东西。

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

+1

当然,这也从数据中删除所有“合法”反斜线你实际上可能*要* ... – deceze

+0

是的,我很担心,太多,所以我可能就不会结束,如果你能走这条路 – db2791

+0

@ db2791解释*为什么*你想要这样,我们可能能够更好地帮助你... –

正如在评论中所解释的那样,您不能防止双引号(")被转义,因为该字符是保留的(在规范中定义)。你可以做的是使用变通方法:使用单引号'来引用文本中的某些内容。

如果你还想在这里看到一个双引号,那么这是很难实现的。将'替换为"是不够的,因为有自然使用'的词。像it'sdon't

const obj = {}; 
 

 
obj['myKey'] = "first word is 'Hello World'"; 
 
obj['anotherKey'] = "second word is 'Lorum Ispum'..."; 
 

 
console.log(JSON.stringify(obj));