JSON解析错误:未终止的字符串

jda*_*awg 4 javascript json syntax-error

在JSON解析函数中转义引号时,我遇到了一个常见的问题.如果存在转义引用,在这种情况下为'test'',则会导致以下错误'SyntaxError:JSON Parse error:Unterminated string'.

var information = JSON.parse('[{"-1":"24","0":"","1":"","2":"","3":"0.0000","4":"","5":"0.00","6":"0.00","7":"1.00","8":"0","9":"false","10":"false","11":[""],"12":"","13":"","14":"test\""}]');

JSON Lint将JSON验证为有效.

ade*_*neo 5

你必须双倍逃避它,如同 "test\\""

var information = JSON.parse('[{"-1":"24","0":"","1":"","2":"","3":"0.0000","4":"","5":"0.00","6":"0.00","7":"1.00","8":"0","9":"false","10":"false","11":[""],"12":"","13":"","14":"test\\""}]');

document.body.innerHTML = '<pre>' + JSON.stringify(information, null, 4) + '</pre>';
Run Code Online (Sandbox Code Playgroud)

第一个反斜杠转义为javascript字符串文字中的第二个反斜杠.第二个反斜杠会转义JSON字符串文字中的引号.

所以它被解析了两次,需要两次转义.

所以,即使它是有效的JSON,你也需要一个转义为javascript字符串文字,它逃脱了JSON中使用的转义.