JSON和ES6地图和集?

时间:2014-03-01 05:49:00

标签: json ecmascript-harmony

ES6 / Harmony为地图和集合引入了新的数据类型。无论如何将JSON加载到这些类型而不是默认的Object和Array?

2 个答案:

答案 0 :(得分:3)

Set与Array的含义不同。集合是唯一项目的集合,而数组是不一定唯一的有序项目集合。

要将JSON加载到地图而不是关联数组中,请查看JSON.parse。您可以编写自定义解析器,如下所示:

JSON.parse(json, (k, v) => {
        if(typeof v == 'object' && !(v instanceof Array))
            return new Map(Object.entries(v));
        return v;
    });

Map采用键值对的迭代器,因此我们需要首先通过Object.entries传递值。 Object.entries是一个计划中的功能,尚未通过它的外观最终确定。这是一个实现:

Object.entries = function* entries(obj) {
   for (let key of Object.keys(obj)) {
     yield [key, obj[key]];
   }
}

(他们可能会决定Object.prototype.entries,在这种情况下,代码看起来会略有不同。)

答案 1 :(得分:0)

我不完全确定“将JSON加载到这些类型中”是什么意思。我假设将其对象文字解析为地图,将数组文字解析为集合?

无论如何,答案是否定的。 JSON不会随ES6而改变,标准JSON对象的API也不会改变。但是,您当然可以很容易地将JSON.parse的结果转换为基于地图的表示。