JSON.parse无法解析数组?

时间:2016-01-04 07:24:11

标签: javascript json node.js

这是一段代码片段,它让我陷入困境:

var _tids = [];
console.log("type:", typeof user._imported_readTids, "value:", user._imported_readTids);
try {
    _tids = JSON.parse(user._imported_readTids);
} catch(e) {
    return nxt();
}

console.log("user:", user.uid, "type:", typeof _tids, "\narray:", _tids);

在第一个console.log中,字段_imported_readTids的类型是一个字符串,这是预期的(数组的字符串表示,如"[1,2,3]"(元素之间没有空格))

当我在该字符串上调用JSON.parse时,我希望它变成一个数组,但是在第二个console.log上,类型仍然是一个字符串,并且数组表示看起来像相同。

这是输出:

// first console.log (truncated for brevity):
type: string value: "[4,5,6,7,8,...,234]"

// second: 
user: 1 type: string 
array: [4,5,6,7,8,...,234]

我已尝试使用这些相同的参数并在控制台nodejs进程中使用,并按预期显示,typeof jsonArray将返回'object'

这是在NodeJS,v0.12.5,OSX 10.11.1(El capitan)

1 个答案:

答案 0 :(得分:3)

第一次使用console.log时,它表示字符串值以"开头和结尾。

第二次,它没有这么说。

您有一个JSON文本的字符串表示形式,它本身由一个JSON文本的字符串表示形式组成,该文本是一个数组。

解析它之后,你有一个JSON文本的字符串表示形式,它是一个数组。

即。你的数组是 double 字符串化,所以你需要解析它两次(或者修改一下编码它的所有东西,所以只做一次)。