我正在创建一个包含数组的地图。 我将此地图作为参数发送到弹出窗口中的方法。
这个数组地图在弹出窗口中变成了地图地图!!
我正在使用IE8。
我正在创建这样的地图:
var mapDetails = new Object();
mapDetails.fields = ['A','B'];
mapDetails.optSampleData = ['X','Y'];
地图的JSON发送:
{'fields':['A','B'],'optSampleData':['X','Y']}
地图的JSON我接收:
{'fields':{'0':'A','1':'B'},'optSampleData':{'0':'X','1':'Y'}}
这在JS中不是问题,因为数据仍然可以作为字段[0]访问。但是,我将它发送到服务器端,我使用GSON来解析JSON。 GSON把它变成了地图。
答案 0 :(得分:2)
尝试此功能
function myParser(str) {
str = str.replace(/'/g, '"');
var obj = JSON.parse(str);
for(var item in obj) {
if(obj.hasOwnProperty(item)) {
var array = [];
for(var arrItem in obj[item]) {
if(obj[item].hasOwnProperty(arrItem)) {
array.push(obj[item][arrItem]);
}
}
obj[item] = array;
}
}
return obj;
}
您可以将收到的字符串传递给此函数,并接收包含数组的所需地图
此外,您可以通过此函数将收到的字符串改为所需的字符串格式:
var str = "{'fields':{'0':'A','1':'B'},'optSampleData':{'0':'X','1':'Y'}}";
var obj = myParser(str);
var desiredFormat = JSON.stringify(obj);
/* The result would be: */
/* "{"fields":["A","B"],"optSampleData":["X","Y"]}" */
希望它可以帮助你:)