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