从json字符串创建映射会产生TypeError:json.parse(..)不可迭代



我正试图从如下json字符串创建一个js映射:

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

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

调用上述方法会产生错误

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

为什么会发生这种情况,我该如何解决?

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

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

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

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

相关内容