[英]string produced by pythons json.dumps() errors when loading with javascripts JSON.parse() at escaped double quotes
[英]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.