在Javascript中将JSONArray转换为JSON对象

时间:2016-03-14 22:59:43

标签: javascript arrays json

我正在尝试将两个JSON数组转换为JSON对象,这是我从ajax调用中读取的。 这就是我阅读和存储它的方法(只需显示这部分代码,你就可以跳到下一段)

        var a = []; 
        var b = [];

        var docsDatafromSOLR = response.response.docs;
        var lengthOfSOLR_response = docsDatafromSOLR.length;

        for (var i=0; i< lengthOfSOLR_response; i++) {
            a.push({
                latitude: docsDatafromSOLR[i].latitude,
                longitude: docsDatafromSOLR[i].longitude
            });

        }

所以基本上我的数组应该是这样的,我已经跳过了剩下的数据:

       "a": [
        {
         "latitude": 23,
         "longitude":43
        },
         {
         "latitude":42,
         "longitude":67
         } 
      ]

数组b也是一样的。

现在问题是如何制作上述JSON数组&#34; a&#34;和&#34; b&#34;以下是这样的事情。我一直在搜索语法,但没有发现任何有用的内容。

{
"1": {
    "a": {
        "latitude": "41",
        "longitude": "-73"
    },
    "b": {
        "latitude": "32",
        "longitude": "-29"
    }
},
"2": {
    "a": {
        "latitude": "47",
        "longitude": "-69"
    },
    "b": {
        "latitude": "42",
        "longitude": "-35"
    }
}
}

3 个答案:

答案 0 :(得分:1)

我能想到的最简单的解决方案是使用Array.prototype.map

只需将其中一个数组映射到预期结果,例如

var result = a.map(function(location, index) { 
    return {a: location, b: b[index]}
});

答案 1 :(得分:1)

试试这个:

var array1 = {
    "a": [
        {
            "latitude": 0,
            "longitude":0
        },
        {
            "latitude":5,
            "longitude":5
        } 
    ]
}

var array2 = {
    "b": [
        {
            "latitude": 10,
            "longitude":10
        },
        {
            "latitude":20,
            "longitude":20
        } 
    ]
}


var result = {}; 
var key1 = Object.keys(array1)[0];
var key2 = Object.keys(array2)[0]; 

for(var i=0; i<array1[key1].length; i++){  
    result[i] = {};
    result[i][key1] = array1[key1][i];
    result[i][key2] = array2[key2][i];
}


console.log(JSON.stringify(result,null,2)); 

输出:

{
  "0": {
    "a": {
      "latitude": 0,
      "longitude": 0
    },
    "b": {
      "latitude": 10,
      "longitude": 10
    }
  },
  "1": {
    "a": {
      "latitude": 5,
      "longitude": 5
    },
    "b": {
      "latitude": 20,
      "longitude": 20
    }
  }

答案 2 :(得分:0)

有点难以弄明白这会发生什么,但是尝试parsing从你的ajax调用中返回的数据就像这样。

.done(function (data) {
    JSON.parse(data); //If properly formatted in your response, data should now be formatted as a object.
})