[英]JSON - Accessing JSON Array and assigning variables
我在名為census.json的文件中包含以下JSON:
{
"areas": [
"UnitedStates", [{
"STATEORREGION": "United States",
"1910POPULATION": 92228531,
"1920POPULATION": 106021568,
"1930POPULATION": 123202660,
"1940POPULATION": 132165129,
"1950POPULATION": 151325798,
"1960POPULATION": 179323175,
"1970POPULATION": 203211926,
"1980POPULATION": 226545805,
"1990POPULATION": 248709873,
"2000POPULATION": 281421906,
"2010POPULATION": 308745538,
"1910CHANGE": 21,
"1920CHANGE": 15,
"1930CHANGE": 16.2,
"1940CHANGE": 7.3,
"1950CHANGE": 14.5,
"1960CHANGE": 18.5,
"1970CHANGE": 13.3,
"1980CHANGE": 11.5,
"1990CHANGE": 9.8,
"2000CHANGE": 13.2,
"2010CHANGE": 9.7
}],
"Alabama", [{
"STATEORREGION": "Alabama",
"1910POPULATION": 2138093,
"1920POPULATION": 2348174,
"1930POPULATION": 2646248,
"1940POPULATION": 2832961,
"1950POPULATION": 3061743,
"1960POPULATION": 3266740,
"1970POPULATION": 3444165,
"1980POPULATION": 3893888,
"1990POPULATION": 4040587,
"2000POPULATION": 4447100,
"2010POPULATION": 4779736,
"1910CHANGE": 16.9,
"1920CHANGE": 9.8,
"1930CHANGE": 12.7,
"1940CHANGE": 7.1,
"1950CHANGE": 8.1,
"1960CHANGE": 6.7,
"1970CHANGE": 5.4,
"1980CHANGE": 13.1,
"1990CHANGE": 3.8,
"2000CHANGE": 10.1,
"2010CHANGE": 7.5
}],
"Alaska", [{
"STATEORREGION": "Alaska",
"1910POPULATION": 64356,
"1920POPULATION": 55036,
"1930POPULATION": 59278,
"1940POPULATION": 72524,
"1950POPULATION": 128643,
"1960POPULATION": 226167,
"1970POPULATION": 300382,
"1980POPULATION": 401851,
"1990POPULATION": 550043,
"2000POPULATION": 626932,
"2010POPULATION": 710231,
"1910CHANGE": 1.2,
"1920CHANGE": -14.5,
"1930CHANGE": 7.7,
"1940CHANGE": 22.3,
"1950CHANGE": 77.4,
"1960CHANGE": 75.8,
"1970CHANGE": 32.8,
"1980CHANGE": 33.8,
"1990CHANGE": 36.9,
"2000CHANGE": 14,
"2010CHANGE": 13.3
}], ]
}
我正在嘗試使用以下方法訪問存儲在數組中的不同值:
$.getJSON("../data/census.json", function (json) {
var censusData = json;
console.log(censusData.areas);
});
這會將所有狀態作為對象記錄到控制台,因此我嘗試使用以下命令將狀態降到另一個級別:
$.getJSON("../data/census.json", function (json) {
var censusData = json;
console.log(censusData.areas.UnitedStates);
});
但這返回“未定義”。 我該如何向下鑽取另一個級別? 理想情況下,我想訪問每個州的特定年份,然后將其分配給一個變量,以便以后使用。
當前沒有第二層,因為狀態名稱及其屬性之間用逗號代替冒號:
"Alaska", [{
"STATEORREGION":"Alaska",
"1910POPULATION":64356,
...
這使值“ Alaska”和屬性字典與列表中的元素相鄰。 看來您想要的是:
"Alaska": [{
"STATEORREGION":"Alaska",
"1910POPULATION":64356,
...
這里的模式是在每個字符串名稱之后,我們都有一系列相關信息:因此您可以將其轉換為類似
var _result = {};
for ( var i=0;i<arr.length/2;i++){
_result[arr[i]] = arr[i+1];
}
那么您可以通過字符串名稱直接訪問這些信息
像這樣
censusData.areas.UnitedStates
轉換后將返回一個數組
您的json數據無效,請嘗試此操作,
{"areas" : [
"UnitedStates", [{
"STATEORREGION":"United States",
"1910POPULATION":92228531,
"1920POPULATION":106021568,
"1930POPULATION":123202660,
"1940POPULATION":132165129,
"1950POPULATION":151325798,
"1960POPULATION":179323175,
"1970POPULATION":203211926,
"1980POPULATION":226545805,
"1990POPULATION":248709873,
"2000POPULATION":281421906,
"2010POPULATION":308745538,
"1910CHANGE":21,
"1920CHANGE":15,
"1930CHANGE":16.2,
"1940CHANGE":7.3,
"1950CHANGE":14.5,
"1960CHANGE":18.5,
"1970CHANGE":13.3,
"1980CHANGE":11.5,
"1990CHANGE":9.8,
"2000CHANGE":13.2,
"2010CHANGE":9.7
}],
"Alabama", [{
"STATEORREGION":"Alabama",
"1910POPULATION":2138093,
"1920POPULATION":2348174,
"1930POPULATION":2646248,
"1940POPULATION":2832961,
"1950POPULATION":3061743,
"1960POPULATION":3266740,
"1970POPULATION":3444165,
"1980POPULATION":3893888,
"1990POPULATION":4040587,
"2000POPULATION":4447100,
"2010POPULATION":4779736,
"1910CHANGE":16.9,
"1920CHANGE":9.8,
"1930CHANGE":12.7,
"1940CHANGE":7.1,
"1950CHANGE":8.1,
"1960CHANGE":6.7,
"1970CHANGE":5.4,
"1980CHANGE":13.1,
"1990CHANGE":3.8,
"2000CHANGE":10.1,
"2010CHANGE":7.5
}],
"Alaska", [{
"STATEORREGION":"Alaska",
"1910POPULATION":64356,
"1920POPULATION":55036,
"1930POPULATION":59278,
"1940POPULATION":72524,
"1950POPULATION":128643,
"1960POPULATION":226167,
"1970POPULATION":300382,
"1980POPULATION":401851,
"1990POPULATION":550043,
"2000POPULATION":626932,
"2010POPULATION":710231,
"1910CHANGE":1.2,
"1920CHANGE":-14.5,
"1930CHANGE":7.7,
"1940CHANGE":22.3,
"1950CHANGE":77.4,
"1960CHANGE":75.8,
"1970CHANGE":32.8,
"1980CHANGE":33.8,
"1990CHANGE":36.9,
"2000CHANGE":14,
"2010CHANGE":13.3
}]
]
}
因此,我可以通過將JSON的結構更改為以下內容來訪問數據:
{"areas" : [ [{ "STATEORREGION":"United States", "POPULATION1910":92228531, "1920POPULATION":106021568, "1930POPULATION":123202660, "1940POPULATION":132165129, "1950POPULATION":151325798, "1960POPULATION":179323175, "1970POPULATION":203211926, "1980POPULATION":226545805, "1990POPULATION":248709873, "2000POPULATION":281421906, "2010POPULATION":308745538, "1910CHANGE":21, "1920CHANGE":15, "1930CHANGE":16.2, "1940CHANGE":7.3, "1950CHANGE":14.5, "1960CHANGE":18.5, "1970CHANGE":13.3, "1980CHANGE":11.5, "1990CHANGE":9.8, "2000CHANGE":13.2, "2010CHANGE":9.7 }], [{ "STATEORREGION":"Alabama", "1910POPULATION":2138093, "1920POPULATION":2348174, "1930POPULATION":2646248, "1940POPULATION":2832961, "1950POPULATION":3061743, "1960POPULATION":3266740, "1970POPULATION":3444165, "1980POPULATION":3893888, "1990POPULATION":4040587, "2000POPULATION":4447100, "2010POPULATION":4779736, "1910CHANGE":16.9, "1920CHANGE":9.8, "1930CHANGE":12.7, "1940CHANGE":7.1, "1950CHANGE":8.1, "1960CHANGE":6.7, "1970CHANGE":5.4, "1980CHANGE":13.1, "1990CHANGE":3.8, "2000CHANGE":10.1, "2010CHANGE":7.5 }], [{ "STATEORREGION":"Alaska", "1910POPULATION":64356, "1920POPULATION":55036, "1930POPULATION":59278, "1940POPULATION":72524, "1950POPULATION":128643, "1960POPULATION":226167, "1970POPULATION":300382, "1980POPULATION":401851, "1990POPULATION":550043, "2000POPULATION":626932, "2010POPULATION":710231, "1910CHANGE":1.2, "1920CHANGE":-14.5, "1930CHANGE":7.7, "1940CHANGE":22.3, "1950CHANGE":77.4, "1960CHANGE":75.8, "1970CHANGE":32.8, "1980CHANGE":33.8, "1990CHANGE":36.9, "2000CHANGE":14, "2010CHANGE":13.3 }] ] }
然后我用了:
$.getJSON( "../data/census.json", function( json ) { var censusData = json; console.log(censusData.areas[0][0].POPULATION1910); });
另請注意,為了訪問它而不會出現錯誤,我必須將1910POPULATION
更改為POPULATION1910
。 比為每個狀態更改每個鍵名,還有更好的方法。
當我想訪問下一個狀態時,我只是將censusData[0][0]
更改為censusData[1][0]
,依此類推。
字符串"United States"
是列表中的第一個元素。
美國的數據位於censusData.areas[1]
。 JSON的結構看起來有些奇怪。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.