簡體   English   中英

將JSON轉換為關聯數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM