javascript - JSON.parse 不会解析数组?

标签 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) 中

最佳答案

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

第二次,它没有这么说。

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

解析它后,您将获得 JSON 文本的字符串表示形式,它是一个数组。

即您的数组是 double 字符串化的,因此您需要解析它两次(或者修复首先对其进行编码的任何内容,以便它只执行一次)。

关于javascript - JSON.parse 不会解析数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34586415/

相关文章:

javascript - 如何发布 json?

json - body-parser读取json post数据node.js express

javascript - Mongoose 如何发送交易多个集合

Javascript Node.js 完全覆盖文件

javascript - 具有多个条件的 Mongoose "Find"

javascript - 非宽度特殊字符去除

c# - MVC4 Web API返回带有特殊字符的json propertykey字符串

node.js - 我的 EC2 实例中的 IP 地址解析是否错误?

javascript - 解析 - 为什么 user.getSessionToken() 返回未定义

php - 组织 3 个文件 : PHP, HTML、JS 和 Smarty