根据文档JSON.parse将第一个参数作为字符串。 我发现了一个意外的行为:
try {
const a = JSON.parse([
'{"helloworld": 1}',
]);
console.log(a);
} catch (ex) {
console.error(ex);
}
我预计它会失败,因为提供的输入参数是一个数组。相反,JSON.parse
成功解析array [0]元素并将其打印出来(在node.js中)。
但是,如果传递带有两个元素的数组,JSON.parse
将会输出错误
try {
const b = JSON.parse([
'{"hello": 1}',
'{"hello2": 2}',
]);
console.log(b);
} catch (ex) {
console.error(ex);
}
为什么会这样?
答案 0 :(得分:1)
JSON.parse是一个需要字符串的内部JS方法。但是,如果给出了其他类型,则会将其转换为字符串。对于数组,转换为字符串为array.join(',')
。
因此,当有一个元素时,它只会将第一个元素转换为字符串。向JSON.parse提供包含多个元素的数组时,由于输入JSON无效,因此会出错。