[英]Not able to access nested objects inside a JSON in Javascript
我正在嘗試在 JSON 文件中提取嵌套對象。 JSON 文件包含有關印度州和地區的信息,如下所示:- https://api.covid19india.org/state_district_wise.Z466DEEC76ECDF5FCA6D38571F6324D
{
"Haryana": {
"districtData": {
"Ambala": {
"notes": "",
"active": 2,
"confirmed": 14,
"deceased": 1,
"recovered": 11,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Bhiwani": {
"notes": "",
"active": 1,
"confirmed": 3,
"deceased": 0,
"recovered": 2,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Charkhi Dadri": {
"notes": "",
"active": 0,
"confirmed": 1,
"deceased": 0,
"recovered": 1,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Faridabad": {
"notes": "",
"active": 18,
"confirmed": 61,
"deceased": 1,
"recovered": 42,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Fatehabad": {
"notes": "",
"active": 0,
"confirmed": 1,
"deceased": 0,
"recovered": 1,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Gurugram": {
"notes": "",
"active": 19,
"confirmed": 57,
"deceased": 0,
"recovered": 38,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
}
}
"Maharashtra": {
"districtData": {
"Other States": {
"notes": "Cases from other States/UTs",
"active": 24,
"confirmed": 27,
"deceased": 3,
"recovered": 0,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Ahmednagar": {
"notes": "",
"active": 17,
"confirmed": 42,
"deceased": 2,
"recovered": 23,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Akola": {
"notes": "",
"active": 30,
"confirmed": 39,
"deceased": 1,
"recovered": 8,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Amravati": {
"notes": "",
"active": 17,
"confirmed": 28,
"deceased": 7,
"recovered": 4,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Aurangabad": {
"notes": "",
"active": 131,
"confirmed": 161,
"deceased": 8,
"recovered": 22,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Bhandara": {
"notes": "",
"active": 1,
"confirmed": 1,
"deceased": 0,
"recovered": 0,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Beed": {
"notes": "",
"active": 0,
"confirmed": 1,
"deceased": 0,
"recovered": 1,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Buldhana": {
"notes": "Reconciled as per MH bulleting 24/04",
"active": 1,
"confirmed": 21,
"deceased": 1,
"recovered": 19,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
},
"Chandrapur": {
"notes": "",
"active": 1,
"confirmed": 3,
"deceased": 0,
"recovered": 2,
"delta": {
"confirmed": 0,
"deceased": 0,
"recovered": 0
}
}
}
}
以上信息表示嵌套在 state 對象中的地區數據對象(這里的地區相當於一個城市)。 例如,哈里亞納邦是 state,而安巴拉是哈里亞納邦的一個地區。 所以有多個州,每個 state 里面有多個區。 我想訪問區域內的活動和已故對象並創建印度所有區域對象的數組,其中包含有關所有區域的信息,如下所示:-
[
{
"active":
"deceased":
"recovered":
"districtname":"District-A"
"statename":
},
{
"active":
"deceased":
"recovered":
"districtname":"District-B"
"statename":
},
{
"active":
"deceased":
"recovered":
"districtname":"District-C"
"statename":
},
{
"active":
"deceased":
"recovered":
"districtname":"District-D"
"statename":
}
]
我嘗試了for...in
方法,還嘗試將內部對象轉換為數組,但無法在內部正確循環。 誰能建議怎么做?
這是循環對象的一種方法,但我不確定它是否是最有效的方法。
const obj = { "a": { "b":{ "b1":1, "b2":2, }, "c":{ "c1":3, "c2":4, } } } for(let key in obj){ let val = obj[key] for(let k in val){ let v = val[k] for (let k2 in v){ console.log(k2, v[k2]) } } }
我創建了以下示例。 它將創建一個對象數組,其中包含 state 名稱、區域名稱、活動鍵和增量值。
我正在使用 object.entries ,它返回包含鍵值對的 arrays 數組。 本質上是一個元組數組。 我將它與 object 解構和擴展運算符結合起來。
const transformFlat = (obj) => { const result = []; Object.entries(obj).forEach(([stateName, { districtData }]) => Object.entries(districtData).forEach(([districtName, { active, delta }]) => result.push({ state: stateName, district: districtName, active, ...delta, }) ) ); return result; }; console.log(transformFlat({ Haryana: { districtData: { Ambala: { notes: '', active: 2, confirmed: 14, deceased: 1, recovered: 11, delta: { confirmed: 0, deceased: 0, recovered: 0, }, }, Bhiwani: { notes: '', active: 1, confirmed: 3, deceased: 0, recovered: 2, delta: { confirmed: 0, deceased: 0, recovered: 0, }, }, }, }, Maharashtra: { districtData: { 'Other States': { notes: 'Cases from other States/UTs', active: 24, confirmed: 27, deceased: 3, recovered: 0, delta: { confirmed: 0, deceased: 0, recovered: 0, }, }, 'Ahmednagar': { notes: '', active: 17, confirmed: 42, deceased: 2, recovered: 23, delta: { confirmed: 0, deceased: 0, recovered: 0, }, }, }, }, }))
嘗試使用帶有Object.values()
for
循環
for (let value of Object.values(obj)) {
console.log(value);
}
obj
是您的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.