【发布时间】:2017-04-12 00:39:43
【问题描述】:
我将core-js 用于 Map 集合,因为似乎 ES7 Map 具有 ES6 Map 中不存在的 Map to JSON 功能.
(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 的 string 键值对,例如
new Map<string, string>()
我希望此类 Map 的 JSON 输出为 {"myKey1": "val123","myKey2":"val456"},因此我会就如何获得所需结果征求建议。
【问题讨论】:
-
{"myKey1","val123","myKey2","val456"}不是有效的 JSON。 -
您的输出是无效的 JSON。对象 (
{}) 需要遵循key: value格式。 ES7 输出是序列化Map的唯一方法:由于键可以是任意对象,因此序列化也可以任意嵌套。所以一个单纯的字符串键在这里是行不通的,而是采用[ key, value ]格式。 -
我不明白你的问题是什么。您唯一一次使用问号是在陈述事实之后。
标签: javascript json typescript ecmascript-6 ecmascript-2016