JSON.parse使用零元素的数组(node.js)

时间:2017-11-20 22:25:52

标签: javascript arrays json node.js parsing

根据文档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);
}

为什么会这样?

1 个答案:

答案 0 :(得分:1)

JSON.parse是一个需要字符串的内部JS方法。但是,如果给出了其他类型,则会将其转换为字符串。对于数组,转换为字符串为array.join(',')

因此,当有一个元素时,它只会将第一个元素转换为字符串。向JSON.parse提供包含多个元素的数组时,由于输入JSON无效,因此会出错。