簡體   English   中英

使用jQuery動態訪問JSON鍵值

[英]Access JSON key value dynamically using jquery

下面是我的動態JSON。 我想訪問json中的'bf'鍵,'xxxxxx20160929'和'yyy813AI20160929'鍵是動態的,但json結構將相同

{
  "resultData": [
    {
      "a": "124",
      "b": "0",
      "c": "0",
      "flc_schedu": {
          "e": "6",
          "f": "en",
          "xxxxxx20160929": [
            {"ID": "yyyyyyyy" },
            {"ID": "fffff"}
         ]
      },
      "fareDetails": {
        "xxxxxx20160929": {
          "yyy813AI20160929": {
            "O": {
              "AD": {
                "bf": "2527"
                    }
                 }
          }
        }
            }
    }
  ]
}

以下是我嘗試的方式

response.resultData[0].fareDetails[Object.keys(response.resultData[0].fareDetails)[0]]

如果我按上述方式嘗試,則可以動態訪問高達“ xxxxxx20160929”的密鑰,但是無法動態地獲取高達“ bf”的密鑰。

您可以使用數組語法引用對象。

var one = 'xxxxxx20160929';
var two = 'yyy813AI20160929';
data.resultData[0].fareDetails[one][two].O.AD.bf;

更新:

此代碼假定每一層只有一個動態對象。

var one = Object.keys(data.resultData[0].fareDetails)[0];
var two = Object.keys(data.resultData[0].fareDetails[one])[0];
var thing = data.resultData[0].fareDetails[one][two].O.AD.bf;
function getBFFromFareDetails(details){
 var bfValues = [];
  for(var k in details.fareDetails){
   // loop over the children of fareDetails
   if( details.fareDetails.hasOwnProperty( k ) ) {
      //each entry in ;fareDetails'
      var itemRoot = details.fareDetails[k]
      for(var k1 in itemRoot){
         // loop over the children of the first unknown item
          if( itemRoot.hasOwnProperty( k1 ) ) {
              //return the bf from the first unknown child
             return itemRoot[k1].O.AD.bf;
          }
      }
    } 
  }
}

如果使用var bf = getBFFromFareDetails(response.resultData[0])調用,則將返回fareDetails的第一個子代及其第一個子代中的第一個bf的值。

您可以在這里看到一個運行中的快速示例https://jsfiddle.net/tocsoft/5364x2sp/

如果您能夠訪問“ xxxxxx20160929”級別,則創建一個變量來存儲該級別,然后使用該變量訪問您需要存儲在變量中的下一個變量,然后使用這兩個變量來訪問所需的密鑰。

var1 = response.resultData[0].fareDetails)[0];
var2 = response.resultData[0].fareDetails)[0][var1];

response.resultData[0].fareDetails)[0][var1][var2];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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