我写了一个示例代码,只是为了解释我之后的情况......
这是一个有效的例子:
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
),但我很确定有一个快速解决方法,无论美化我的代码。
这里需要小调整......
答案 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数据只能从外部源加载。