2016-03-14 135 views
-1

我想2 JSON數組轉換成JSON對象這是我從Ajax調用讀取。 這是我正在讀和存儲它(僅僅只是櫃面這部分代碼,就可以跳到下一段)轉換JSONArray對JSON對象在Javascript

 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陣列「A」和「B」,以這樣的下面。我正在尋找語法,但沒有發現任何用處。

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

您應該添加到目前爲止,你已經嘗試過什麼/是什麼原因造成的問題給你。 –

+0

那些其實並不JSON數組,但規則的Javascript數組。 JSON是對Javascript數據進行編碼/序列化/字符串化的一種方式。 – jcaron

回答

1

我能想到的是使用Array.prototype.map的最簡單的辦法。

只需映射陣列中的一個到預期的結果,例如

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

它仍然停留爲一個數組。複製從控制檯粘貼:[對象,對象,對象] 0:對象 一個:12 B:11 __proto__:對象 1:對象 一個:23 B:33 __proto__:對象 2:對象 一個:34 b:44 – Adnan

0

它還挺很難搞清楚究竟在何處,這將去,但嘗試parsing你的返回的數據從你的AJAX調用像這樣。

.done(function (data) { 
    JSON.parse(data); //If properly formatted in your response, data should now be formatted as a object. 
}) 
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 
    } 
    }