[英]Convert JSON to Associative array
我想將JSON響應轉換為關聯數組,但看起來我無法使其正確。
這是我的JSON示例響應:
{
"response":[
{
"id":100,
"certificate":{
"id":1,
"title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."
},
"created_at":"2013-12-02T15:20:08.233Z"
},
{
"id":101,
"certificate":{
"id":2,
"title":"Aenean facilisis, nisl vitae pulvinar varius."
},
"created_at":"2013-12-02T15:20:08.240Z"
}
],
"count":2
}
這是我到目前為止所嘗試的:
var len = obj.response.length;
var rData = [];
var gcData = [];
for(var i = 0; i < len; i++){
rData[i] = $.map(obj.response[i], function(value, index) {
if(typeof value=="object"){
gcData = $.map(value, function(value1, index) {
return [value1];
});
return gcData;
}else{
return [value];
}
});
}
我的預期產量:
rData = [
100 : [
id: ["100"],
certificate: [
id: ["1"],
title: ["Lorem ipsum dolor sit amet, consectetur adipiscing elit."]
],
created_at: ["2013-12-02T15:20:08.240Z"]
]
101 : [
id: ["101"],
certificate: [
id: ["2"],
title: ["Aenean facilisis, nisl vitae pulvinar varius."]
],
created_at: ["2013-12-02T15:20:08.240Z"]
]
]
請幫忙。 謝謝。
我只是想按照我預期輸出中的鍵來分組
看來你想創建一個id -> object
圖。 要做到這一點,你只需要迭代數組,將每個對象的id
屬性作為屬性名稱,並將對象(數組的元素)分配給地圖的該屬性。
例:
var map = {};
var response = obj.response;
for (var i = 0, l = response.length; i < l; i++) {
map[response[i].id] = response[i];
}
console.log(map);
數組中的每個對象都已經在您想要的結構中。 輸出是
{
"100": {
"id": 100,
"certificate": {
"id": 1,
"title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
},
"created_at": "2013-12-02T15:20:08.233Z"
},
"101": {
"id": 101,
"certificate": {
"id": 2,
"title": "Aenean facilisis, nisl vitae pulvinar varius."
},
"created_at": "2013-12-02T15:20:08.240Z"
}
}
您所需的JSON不正確。
目前尚不清楚是否要創建數組數組或數組對象或什么。 要幫助確定哪個選項符合您的需求,請嘗試使用此代碼
var a=[];
var o={};
for (var i=0, l=response.length; i<l; i++) {
var e = response[i];
a[e.id] = e.certificate;
o[e.id] = e.certificate;
}
console.log(JSON.stringify(a));
console.log(JSON.stringify(o));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.