Javascript :: JSON解析不接受换行符?

时间:2015-04-18 12:51:11

标签: javascript arrays json object replace

我写了一个示例代码,只是为了解释我之后的情况......

这是一个有效的例子:

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),但我很确定有一个快速解决方法,无论美化我的代码。

这里需要小调整......

5 个答案:

答案 0 :(得分:6)

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

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

alert(obj.gangina);

答案 1 :(得分:2)

只是为了消除困惑。错误在这里:

var json=
'
    {

在第2行,有一个引用:a string的开头。然后一个未转义的线断裂。这会导致语法错误,并且您的代码都没有被执行。特别是,JSON.parse没有被执行。

答案 2 :(得分:2)

我想你想'打印'长JSON字符串?

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

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

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

答案 3 :(得分:2)

Chrome 41+和Firefox 34+现在支持ES6 template strings。是时候知道了。

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

答案 4 :(得分:2)

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

使用..

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

alert(obj.gangina);

但我的问题是为什么在第一名使用json,如果手工编码使用一个对象,那么这不会成为问题,json数据只能从外部源加载。