2017-08-16 84 views
0

我有一個對象,停止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將會轉義該值中的字符。 –

回答

2

如果你確實需要這個,你可以使用類似JSON.stringify(obj).replace(/\\/g,'')的東西。

當心:輸出將不是有效的JSON,如果您的JSON中有任何「合法」反斜槓,則可能會發生數據丟失。

+1

當然,這也從數據中刪除所有「合法」反斜線你實際上可能*要* ... – deceze

+0

是的,我很擔心,太多,所以我可能就不會結束,如果你能走這條路 – db2791

+0

@ db2791解釋*爲什麼*你想要這樣,我們可能能夠更好地幫助你... –

0

正如在評論中所解釋的那樣,您不能防止雙引號(")被轉義,因爲該字符是保留的(在規範中定義)。你可以做的是使用變通方法:使用單引號'來引用文本中的某些內容。

如果你還想在這裏看到一個雙引號,那麼這是很難實現的。將'替換爲"是不夠的,因爲有自然使用'的詞。像it'sdon't

const obj = {}; 
 

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

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