包含数组的JavaScript地图将变为包含地图的地图

时间:2014-04-05 10:16:29

标签: javascript json internet-explorer internet-explorer-8 gson

我正在创建一个包含数组的地图。 我将此地图作为参数发送到弹出窗口中的方法。

这个数组地图在弹出窗口中变成了地图地图!!

我正在使用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把它变成了地图。

1 个答案:

答案 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"]}" */

希望它可以帮助你:)