【问题标题】:creating map from json string yields TypeError: JSON.parse(...) is not iterable从 json 字符串创建地图会产生 TypeError: JSON.parse(...) is not iterable
【发布时间】:2020-12-20 14:53:47
【问题描述】:

我正在尝试从这样的 json 字符串创建一个 js 映射:

function jsonToMap(jsonStr) 
{
    return new Map(JSON.parse(jsonStr));
}

jsonStr 参数包含一个有效的 json。 json 只有字符串键,但可以有对象作为值。

调用上面的方法会报错

TypeError: JSON.parse(...) 不可迭代

为什么会发生,我该如何解决?

【问题讨论】:

  • 你能在问题中添加一个示例 JSON 吗?
  • 这是一个 json 示例:{"key" : "value"}

标签: javascript json ecmascript-6


【解决方案1】:

这告诉我们 JSON 定义的最外层部分是不可迭代的。例如,它可能定义了一个对象(普通对象不可迭代)。

如果它确实定义了一个对象,并且您想为其获取 Map,您可以通过 Object.entries 来实现:

function jsonToMap(jsonStr) 
{
    return new Map(Object.entries(JSON.parse(jsonStr)));
}

Object.entries 为对象自己的、可枚举的、以字符串命名的属性创建一个由 [name, value] 对组成的数组。

【讨论】:

  • json 确实在对象表示法中。就是这样
猜你喜欢
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2020-03-05
  • 2019-04-12
  • 2018-02-01
  • 2016-02-18
  • 1970-01-01
相关资源
最近更新 更多