簡體   English   中英

用“ \\”代替

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM