Search code examples
javascriptjsonsyntax-error

JSON Parse error: Unterminated string


I've met an usual problem when escaping a quote within the JSON parse function. If the escaped quote is present, in this case 'test"', it causes the following error '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 validates the JSON as valid.


Solution

  • You'll have to double escape it, as in "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>';

    The first backslash escapes the second backslash in the javascript string literal. The second backslash escapes the quote in the JSON string literal.

    So it's parsed twice, and needs escaping twice.

    So even if it's valid JSON, you'll need one escape for javascript string literals that escapes the escape used in JSON.