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 数据应该只从外部源加载.
我写了一个示例代码只是为了解释我的目的所以...
这是一个工作示例:
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 数据应该只从外部源加载.