その中心となるのは、JSONは、基本的なol'JS配列とオブジェクトを組み合わせて、サーバー間で交換したり、簡単に解析したりできるオブジェクトを作成するための正式な方法にすぎません。
では、どのように配列を反復処理しますか?
for (i=0; i<array.length; i++)
fn(array[i]);
JSオブジェクト/マップの値を列挙するのはどうですか?
for ( key in obj )
fn(obj[key]);
次に、それらを組み合わせてみましょう。
for (var i=0; i < data.length; i++) {
for ( var key in data[i]["mes"] ) {
var mName = key;
var inversion = data[i]"mes"][key]["Inversion"];
var fans = data[i]"mes"][key]["Fans"]
alert( [mName, inversion, fans].join(", "));
}
}
ただし、JSON構造はかなり貧弱です。すべてのレベルmes
で、オブジェクトに対応するキーがあります。これは、過度に二重にネストされています。そのシナリオでmes
は、本当の意味はありません。代わりに、次の構造を検討してください。
var data = [
{
"mes": "January",
"Inversion": "1000",
"Fans": "1020"
},
{
"mes": "February",
"Inversion": "15500",
"Fans": "285"
}
];
これは、より単純で論理的であり、(後でわかるように)操作が簡単です。
for (var i=0; i < data.length; i++) {
var objToString = [];
for ( var key in data[i] ) {
objToString.push(data[i][key]);
}
alert( objToString.join(", "));
}