Jsonを巡ってデータを得るいくつかの方法


JsonはWeb開発の用途が非常に広く,データ伝達の担体としてJsonが返すデータをどのように解析するかがよく用いられる.Jsonを解析する方法を4つ紹介します.例①:
var list1 = [1,3,4];
alert(list1[1]);
var list2 = [{"name":"leamiko","xing":"lin"}];
alert(list2[0]["xing"])
alert(list2[0].xing)

例②:
var value = {
    "china":{
        "hangzhou":{"item":"1"},
        "shanghai":{"item":"2"},
        "chengdu":{"item":"3"}
    },
    "America":{
        "aa":{"item":"1"},
        "bb":{"item":"2"}   
    },
    "Spain":{
        "dd":{"item":"1"},
        "ee":{"item":"2"},
        "ff":{"item":"3"}   
    }
};

for(var countryObj in value)
{
    document.write(countryObj + ":
"
) // for(var cityObj in value.countryObj) for(var cityObj in value[countryObj]) { document.write(' ' + cityObj + "
>"); for(var itemObj in value[countryObj][cityObj]) { document.write(" "+ itemObj + value[countryObj][cityObj][itemObj] +"
") } } }

解釈:countryObjはvalueオブジェクトの1つの属性明である、value[countryObj]はvalueオブジェクトの属性値であるここでは1つのjsonオブジェクト、例えばbである、value[countryObj][cityObj]はjosnオブジェクトbの属性値であり、これもjsonオブジェクトであるため、value[countryObj][cityObj][item]はjsonオブジェクトが一時的にcの値になるか、value[countryObj][cityObj]を取ることができる.item. とにかくjsonなのかarrayなのかをはっきりさせることが肝心です.
例③:
var value2 = {
    "china":[
        {"name":"hangzhou", "item":"1"},
        {"name":"shanghai", "item":"2"},
        {"name":"sichuan", "item":"3"}
    ],
    "America":[
        {"name":"aa", "item":"12"},
        {"name":"bb", "item":"2"}
    ],
    "Spain":[
        {"name":"cc", "item":"1"},
        {"name":"dd", "item":"23"},
        {"name":"ee", "item":"3"}
    ]
};
for (var countryObj in value2)
{
    document.write(countryObj + ":
"
) for (var cityObj in value2[countryObj]) { // document.write(" " + value2[countryObj][cityObj].item + "
"
); document.write(cityObj + " " + value2[countryObj][cityObj]["name"] + "
"
); } }

解釈:countryObjはvalue 2オブジェクトの属性名、value 2[countryObj]はvalue 2オブジェクトの属性値であるこの例では配列である、cityObjは配列の1つの要素であり、また別のjsonオブジェクトであるため、value 2[countryObj][cityObj][name]はそのオブジェクトのnameの属性値にアクセスし、value 2[countryObj][cityObj].nameでプロパティ値にアクセスします.
例④:
var value2 = {
    "china":[
        {"name":"hangzhou", "item":"1"},
        {"name":"shanghai", "item":"2"},
        {"name":"sichuan", "item":"3"}
    ],

    "America":[
        {"name":"aa", "item":"12"},
        {"name":"bb", "item":"2"}
    ],
    "Spain":[
        {"name":"cc", "item":"1"},
        {"name":"dd", "item":"23"},
        {"name":"ee", "item":"3"}
    ]
};

    for (var countryObj in value2)
    {
        document.write(countryObj + ":
"
) //document.write(" " + value2[countryObj].length); for (var i = 0;i < value2[countryObj].length; i++) { document.write(" " + value2[countryObj][i]["name"] + "
>"); } }

説明:countryObj value 2オブジェクトの属性名、value 2[countryObj]属性値この例では配列、value 2[countryObj]である.length配列の長さ、value 2[countryObj][i]配列のアイテム==jsonオブジェクト.
value 2[countryObj][i][name]でnameの値を取得し、value 2[countryObj][i]を使用することもできる.nameでnameの値を取得します.
一人で道が見つからないときは、今できることを極めて、誰も及ばないようにするのが一番です.