ES7 Map JSON 添加方括号
ES7 Map JSON adds square brackets
我正在使用 core-js
作为 Map 集合,因为它似乎 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
of string key-value pairs like
new Map<string, string>()
我希望此类地图的 JSON 输出为 {"myKey1": "val123","myKey2":"val456"}
,因此我会征求有关如何获得所需结果的建议。
这是因为默认的地图迭代器是 .entries
,它会生成键值对。如果你想使用另一个迭代器,你必须提供或编程它,例如:
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)
我正在使用 core-js
作为 Map 集合,因为它似乎 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
of string key-value pairs like
new Map<string, string>()
我希望此类地图的 JSON 输出为 {"myKey1": "val123","myKey2":"val456"}
,因此我会征求有关如何获得所需结果的建议。
这是因为默认的地图迭代器是 .entries
,它会生成键值对。如果你想使用另一个迭代器,你必须提供或编程它,例如:
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)