javascript - ES7 Map JSON 添加方括号

标签 javascript json typescript ecmascript-6 ecmascript-2016

我使用 core-js 作为 Map 集合,因为 ES7 Map 似乎有一个不存在的 Map to 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"} 所以我会询问如何获取期望的结果。

最佳答案

这是因为默认的映射迭代器是 .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)

关于javascript - ES7 Map JSON 添加方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841799/

相关文章:

ios - Swift 用于 JSONEncoder 的默认日期格式是什么?

node.js - 更改 API 返回对象中的输出名称

Angular 5 源文件是用 Webpack 4 半编译的

javascript - 将未定义的参数传递给函数 - 检查变量是否存在

javascript - 如何使用 docs-api (node) 将 N 个 google 文档合并为一个

java - 用于读取 JSON 文件的 JUnit 测试

node.js - NestJs - 从自定义装饰器内的服务调用方法

javascript - 这两种使用 toString() 的方法有什么区别?

javascript - _.chain() 中的方法参数

java - 如何用接口(interface)序列化一个类?