我正在尝试将两个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"
}
}
}
答案 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.
})