ES7 Map JSON添加了方括号

时间:2016-11-28 10:17:46

标签: javascript json typescript ecmascript-6 ecmascript-7

我正在使用core-js用于地图集合,因为似乎 ES7 Map具有地图到JSON功能, ES6 Map

(ES6): JSON.stringify(new Map().set('myKey1', 'val123').set('myKey2', 'val456')); => {}

虽然ES 7似乎在键值对中添加了不必要的方括号

Eg (ES7): JSON.stringify(new Map().set('myKey1', 'val123').set('myKey2', 'val456')); => [["myKey1","val123"],["myKey2","val456"]]

当我期待这一点时:

{"myKey1": "val123","myKey2":"val456"}

请帮忙!

修改 我意识到我发布了一个糟糕的JSON,但在编写问题时这只是一个输入错误。

重点是,因为我正在使用TypeScript创建一个新的Map 字符串键值对,如

new Map<string, string>()

我希望这样的Map的JSON输出为{"myKey1": "val123","myKey2":"val456"},所以我会询问有关如何获得所需结果的建议。

1 个答案:

答案 0 :(得分:3)

这是因为默认的映射迭代器是.entries,它产生键值对。如果要使用其他迭代器,则必须提供或编程,例如:

&#13;
&#13;
function *flatEntries(map) {
    for (let [k, v] of map) {
        yield k;
        yield v;
    }
}


let m = new Map().set('myKey1', 'val123').set('myKey2', 'val456');
let s = JSON.stringify([...flatEntries(m)]);

console.log(s)
&#13;
&#13;
&#13;