ES6/Harmony爲Maps和Sets引入了新的數據類型。無論如何,將JSON加載到這些類型而不是默認的Object和Array中?JSON和ES6地圖和集?
4
A
回答
0
我不完全確定「將JSON加載到這些類型中」是什麼意思。我假設解析它的對象文字作爲地圖和數組文字作爲集?
無論如何,答案是否定的。 JSON不會隨ES6而改變,標準JSON對象的API也不會改變。但是,您當然可以很容易地將JSON.parse的結果轉換爲基於地圖的表示形式。
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. ES6地圖和集合:對象索引如何有效地索引?
- 2. Google地圖對象和地圖集成
- 3. jQuery和谷歌地圖JSON
- 4. Java集合和地圖
- 5. 與Golang地圖和結構和JSON
- 6. 替代ES6地圖
- 7. 地圖在JS(ES6)
- 8. ES6地圖功能
- 9. Elastic Beanstalk和ES6
- 10. Nashorn Javascript和ES6
- 11. Node.js和ES6
- 12. ES6類和module.exports
- 13. ES6和sequelize-cli
- 14. ES6和lodash中的地圖方法有什麼區別?
- 15. Google地圖v3,JSON,對象和Opera
- 16. Google地圖和Internet Explorer Javascript/JSON問題
- 17. jQuery和谷歌地圖JSON響應
- 18. Mapstraction和JSON谷歌地圖風格
- 19. 很難與JSON和谷歌地圖
- 20. Angularjs和谷歌地圖標記集羣
- 21. 收集在java中的地圖和HashMap
- 22. CMake鏈接地圖集和llapack
- 23. 流API總和與收集到地圖
- 24. Pivotviewer和必應地圖集成
- 25. Grails Twitter Bootstrap和谷歌地圖集成
- 26. LinkedIn羣組和Google地圖集成
- 27. 集成fullPage.js和谷歌地圖api
- 28. Karma,PhantomJS和es6 Promises
- 29. Module.exports和es6導入
- 30. React和ES6繼承
權,但(一)爲什麼不改變它?如果JSON主要關注對象可移植性,那麼不應該將大多數語言更緊密地實現,它們是ES6 Maps的「Object Syntax」,以及它們的Array語法ES6 Sets。當原型無關緊要,並且你不想繼承時,那些匹配不是那麼好的匹配... –
當然可以想象新的功能,即創建地圖和集合的單獨解析函數。但沒有人爲此提出建議。是否足夠取決於用例。特別要注意的是,儘管所有的JSON對象都可以被解析爲地圖,但反過來卻不是這樣:帶有非字符串鍵的地圖沒有JSON表示。可以說,這使得這種映射不那麼自然。另外,JSON經常被簡單地用作JS對象的序列化格式。 –
寫出一個ecmascript 6映射到JSON(stringify),它看起來像一個對象。當從JSON(字符串)中讀取相同的字符串化表示時,它將丟棄關於它以前是帶有Map的對象的所有知識。 – arcseldon