簡體   English   中英

復制和粘貼帶轉義引號的字符串對象時出現JSON.parse異常

[英]JSON.parse exception when copy & pasting stringified objects with escaped quotes

我必須對一些JS對象進行字符串化處理才能將文本保存在某個地方,然后我希望能夠手動復制保存的文本,然后通過控制台將其傳遞給一個函數,該函數可以對文本進行解析以對原始對象進行處理。

不幸的是,因為粘貼總是失敗,所以解析粘貼的文本似乎存在轉義雙引號的問題。

我創建了一個小片段來說明我的問題:

http://jsfiddle.net/wgwLcgz6/1/

var jsonStr = JSON.stringify({ arg1: 'some string "with quotes"' });

$('#out1').html(jsonStr); // {"arg1":"some string \"with quotes\""}
JSON.parse(jsonStr); // Works just fine
try {
    // Copied the ouput of JSON.stringify manually and pasted it directly into
    // the parse function...
    JSON.parse('{"arg1":"some string \"with quotes\""}');

    // We never get here since an exception is thrown
    $('#out2').html('Parsed successfully');
} catch (ex) {
    // SyntaxError: Unexpected token w
    $('#out2').html(ex.toString());
}

我想我確實理解了為什么會發生這種情況,即使我無法正確解釋,但我對如何避免這種情況一無所知,並且會非常感謝您的幫助和更深入的解釋。

還有一件事:如果我將字符串化的對象{"arg1":"some string \\"with quotes\\""}粘貼到在線json解析器中,例如http://jsonlint.com/,它將解析得很好,我想這是因為他們使用自己的解析器,而不是內置的瀏覽器...

您需要轉義引號和反斜杠。 由於您在帶雙引號的字符串周圍使用單引號,因此只需要轉義反斜杠即可:

JSON.parse('{"arg1":"some string \\"with quotes\\""}');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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