与jQuery/JS
问题描述:
序列化映射对象[这是第一个问题上如此,所以我道歉对任何错误]与jQuery/JS
我想保存地图,像下面的一个,在Cookie中。
var myMap = new Map();
myMap.set("k1", {
a1: "...",
a2: "...",
a3: "..."
});
为此,我必须格式化为JSON。我试过很多方法,如:
$.toJSON(myMap)
$.param(myMap)
JSON.stringify(myMap)
但他们都不似乎工作...
所以,我这样做:
var serial = [];
myMap.forEach(function(value){
serial.push(value);
});
var result = $.toJSON(serial)
(有重建的解码关键JSON ...)
有更好的方法来序列化一个Map对象吗?
答
不完全是一个典型的“字符串”,但您可以使用蔓延运营商JSON.stringify()
相结合,会给你一个数组...
var myMap = new Map();
myMap.set("k1", { a1: "...", a2: "...", a3: "..." });
myMap.set("k2", { b1: "...", b2: "...", b3: "..." });
var myJSON = JSON.stringify([...myMap]);
alert(myJSON);
这会给你...
[["k1",{"a1":"...","a2":"...","a3":"..."}],["k2",{"b1":"...","b2":"...","b3":"..."}]]
并把它转换再次地图...
var recoveredMap = new Map(JSON.parse(myJSON));
尼斯,非常感谢! –
这很好用,但旧版浏览器不支持。检查[这里](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)以获得兼容性。 –