如何从json中提取特定信息

时间:2015-09-13 20:52:10

标签: javascript json

我正在尝试从下面的json获取subdivisions.names.en但是仍然遇到“TypeError:location.subdivisions.names is undefined”错误。我确信它简单而且简单只是需要更多的睡眠;)

我可以得到其他我需要的信息 - 这有效:

alert(location.city.names.en + ' ' + location.postal.code);

但这不是:

alert(location.subdivisions.names.en);

这是我的json:

{
    "continent": {
        "code": "OC",
        "geoname_id": xxx,
        "names": {
            "fr": "Océanie",
            "pt-BR": "Oceania",
            "zh-CN": "大洋洲",
            "es": "Oceanía",
            "de": "Ozeanien",
            "ja": "オセアニア",
            "en": "Oceania",
            "ru": "Океания"
        }
    },
    "location": {
        "longitude": xxxx,
        "latitude": -xxxx,
        "time_zone": "Australia/Melbourne"
    },
    "subdivisions": 
    [
        {
            "names": {
                "ru": "Виктория",
                "pt-BR": "Vitória",
                "en": "Victoria"
            },
            "iso_code": "VIC",
            "geoname_id": xxxx
        }
    ],
}

2 个答案:

答案 0 :(得分:3)

"subdivisions": [ ...表示此变量是一个对象数组。您需要索引正确的条目:

  alert(location.subdivisions[0].names.en);

请注意,一定不能有任何条目

"subdivisions": [], ...

以及其中很多,所以必须对索引进行一些逻辑/检查。

location.subdivisions.length可能有帮助

答案 1 :(得分:2)

“subdivisions”被定义为json文件中的数组。根据目的,将其更改为哈希(删除方括号)或修改对

的访问权限
alert(location.subdivisions[0].names.en);