[英]Replacing “ with \”
我正在嘗試將所有的"
替換為\\"
並使用JSON解析字符串,但瀏覽器拋出錯誤SyntaxError: JSON Parse error: Unrecognized token '\\'
。
下面是代碼。 字符串a可以很好地進行JSON.parsed,但是盡管我將字符串b中的所有"
替換為\\"
,使其與字符串a相同,但解析失敗。 我在JSBIN中有代碼。
var a = '[\"{\\"objects\\":[],\\"background\\":\\"#fff\\"}\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]';
var b = '["{\"objects\":[],\"background\":\"#fff\"}","","","","","","","","",""]';
// Replace " with \"
// Charcode 92 is \
b = b.replace('"', String.fromCharCode(92)+'"', "g");
a = JSON.parse(a);
console.log(a);
b = JSON.parse(b);
console.log(b);
任何想法,我怎么能用JSON.parse解析字符串b? 如果我手動將所有的"
替換為\\"
,則可以很好地解析,但是我正在尋找自動化的方式。
該點是使用2 \\
:
b = b.replace(/"/g,'\\"')
結果是:
[\"{\"objects\":[],\"background\":\"#fff\"}\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"]
正如@isherwood所說:
更清楚地說,反斜杠是轉義符,因此您需要將其加倍,以便在轉義符后面有一個實際字符。
嘗試使用此:
b = b.replace(/"(?=[^\{]*\})/g, '\\"');
這將替換所有的"
括號內的\\"
。
第一個字符串a
實際上變為:
["{\"objects\":[],\"background\":\"#fff\"}","","","","","","","","",""]
這就是使b
變成什么,除了在生成變量之后,它變成:
["{"objects":[],"background":"#fff"}","","","","","","","","",""]
因此,您實際上必須將\\
放回原處。
但是,由於您嘗試解析JSON,因此最好使用:
b = JSON.stringify(b);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.