【问题标题】:Unable to parse array in JSON.parse in node无法解析节点中 JSON.parse 中的数组
【发布时间】:2016-05-27 18:07:41
【问题描述】:

我使用的是节点版本 6.0.0。我想将 JSON 字符串解析为 JSON 对象。该字符串包含一个对象数组。

但是JSON.parse 根本没有成功转换任何类型的数组。 它为所有数组返回一个空数组,无论它们的内容是什么。

编辑:这不仅仅是一个控制台问题。我将解析后的数据保存在我的数据库中。而且我也只看到一个空数组。控制台没有任何魔术。

更新:一些外部代码破坏了数组定义。现在所有数组定义都以一个空数组结束。正在调试原因,感谢所有回复。

示例:

contacts = '{"data": [{"p": "", "e": "", "n": "Veera Sundar"}]}'  // This is my example JSON String. Rest are hit and trials.
> JSON.parse(contacts)
{ data: [] }
> a = '{"data": [{"p": ""}]}'
'{"data": [{"p": ""}]}'
> JSON.parse(a)
{ data: [] }
> a = '{"data": [1,2,3]}'
'{"data": [1,2,3]}'
> JSON.parse(a)
{ data: [] }
> a = '{"d": [1,2,3]}'
'{"d": [1,2,3]}'
> JSON.parse(a)
{ d: [] }
> a = '{"d": {"c":1}}'
'{"d": {"c":1}}'
> JSON.parse(a)
{ d: { c: 1 } }    // Works for objects
> a = '{"d": {"c":[1]}}'
'{"d": {"c":[1]}}'
> JSON.parse(a)
{ d: { c: [] } }
> a = '{"d": {"c":["b","e"]}}'
'{"d": {"c":["b","e"]}}'
> JSON.parse(a)
{ d: { c: [] } }
> a = '{"d": {"c":[{"b":1}]}}'
'{"d": {"c":[{"b":1}]}}'
> JSON.parse(a)
{ d: { c: [] } }
> a = '{"d": {"c":["undefined"]}}'
'{"d": {"c":["undefined"]}}'
> JSON.parse(a)
{ d: { c: [] } }`

其他都失败了!!

请让我知道我做错了什么。所有这些示例都适用于常规控制台,例如:Chrome 控制台。

【问题讨论】:

  • 您可能误解了控制台输出。你看到{ data: [] } 中的数组在控制台中是超链接的吗?点击它打开它的内容....不要误以为数组是空的。
  • 我刚刚运行了您的代码,没有任何问题,trincot 是对的,也许它只是向您显示了一个误导性提示。这是我的结果:>contacts = '{"data": [{"p": "", "e": "", "n": "Veera Sundar"}]}' '{"data": [{" p": "", "e": "", "n": "Veera Sundar"}]}' > JSON.parse(contacts) { data: [ { p: '', e: '', n: ' Veera Sundar' } ] } > a = '{"data": [{"p": ""}]}' '{"data": [{"p": ""}]}' > JSON.parse( a){数据:[{p:''}]}
  • 我明白了,chrome 控制台确实显示了完整的数组,但 repl 没有。我做了 util 检查,它确实显示了值,但这很奇怪: > util.inspect(JSON.parse(contacts)) '{ data: [ { p: \'\', e: \'\', n : \'Veera Sundar\' } } ' > JSON.parse(contacts) { data: [] } > a = JSON.parse(contacts) { data: [] } > util.inspect(a) '{ data: [ { p: \'\', e: \'\', n: \'Veera Sundar\' } ] }'
  • 即使控制台没有显示值,不知何故,我应该能够正确访问它:a.data 返回一个空数组
  • 您可以与> JSON.stringify(JSON.parse(contacts));交叉检查解析结果。

标签: javascript json node.js


【解决方案1】:

发现这是 Node v6.0.0 中的一个错误,其中填充的数组表示为空数组。 在 git 上发布 this issue。不过,它已在 6.2.0 版上得到解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2019-01-14
    • 2017-10-13
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多