Javascript:: JSON parse 不接受换行符?

Javascript:: JSON parse does not accept line breaks?

我写了一个示例代码只是为了解释我的目的所以...

这是一个工作示例:

var json='{"hezi":"firstName","gangina":"lastName"}',
    obj=JSON.parse(json);

alert(obj.gangina);

这里是带有换行符和制表符的完全相同的代码(只是为了使代码更具可读性,因为在我的真实代码中 JSON 数组字符串非常大):

var json=
'
    {
        "hezi":"firstName",
        "gangina":"lastName"
    }
',
    obj=JSON.parse(json);

alert(obj.gangina);

我什至试图补偿:

    obj=JSON.parse(json.replace(/(\r\n|\n|\r|\t)/gm,""));

所以...从技术上讲,我可以通过压缩我的行(手动删除所有 \r\n|\n|\r|\t)来解决这个问题,但我很确定无论美化我的代码如何,都有一个快速修复方法。

这里需要稍微调整一下...

JavaScript不接受换行不转义。您可以通过转义换行符来解决此问题:

var json=
'\
    {\
        "hezi":"firstName",\
        "gangina":"lastName"\
    }\
',
obj=JSON.parse(json);

alert(obj.gangina);

只是为了消除混乱。错误在这里:

var json=
'
    {

第 2 行有一句话:a string 的开头。然后是一个未转义的换行符。这会导致 SyntaxError 并且您的代码 none 会被执行。特别是,JSON.parse 没有被执行。

我想你想要 'pretty print' 长 JSON 字符串?

在那种情况下:您可以在 JSON.stringify 中使用 space 参数来显示格式化的长 JSON 字符串。参见 MDN。例如:

var json = '{"hezi":"firstName","gangina":"lastName"}'
    obj = JSON.parse(json);

document.querySelector('#result').innerHTML = JSON.stringify(obj, null, ' ');
<pre id="result"></pre>

ES6 template strings 现在支持 Chrome 41+ 和 Firefox 34+。是时候了解一下了。

JSON.parse(`
   {
        "hezi":"firstName",
        "gangina":"lastName"
    }
`);

您需要使用换行符来实现此目的,但不建议转义,因为它很容易错误地转义 space,这会引发格式错误。

使用..

var json=
'{'+
 '"hezi":"firstName",'+
 '"gangina":"lastName"'+
'}',
    obj=JSON.parse(json);

alert(obj.gangina);

但我的问题是为什么首先要使用 json,如果手动编码使用一个对象那么这就不是问题,json 数据应该只从外部源加载.