2015-09-13 48 views
0

我想从下面的json中获取subdivisions.names.en,但不断收到“TypeError:location.subdivisions.names is undefined”错误。我敢肯定它的东西简单&概率只是需要更多的睡眠;)如何从json中提取特定信息

我能得到其他我需要的信息 - 这工作:

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 
     } 
    ], 
} 

回答

3

"subdivisions": [ ...表示该变量是一个对象数组。你需要指数之条目:

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

请注意,不能有任何条目

"subdivisions": [], ...

和他们中的很多,所以必须有一些逻辑/检查的指数。

location.subdivisions.length可能有助于

+0

我必须得到更多的睡眠 - 谢谢你:) – MWD

0

You should have a look at what is JSON and how to use it properly because apparently you seem to lack the basic knowledge of how JSON is structured.

这就是说,location.subdivisions.names.en未定义的原因是因为在您的JSON中它不存在。

subdivisions也是一个对象数组。

为了访问您正在尝试的操作,您必须使用subdivisions[0].names.en

+1

我认为问题并不清楚。它看起来像位置是一个变量,这个JSON被分配给(看看什么是有效的,什么是包含在位置,你会明白我的意思)。我相信真正的问题是,细分是一个数组... – user3334690

+0

我认为'位置'在json给定的上下文中必须解决'location.location。〜' –

+1

我会appreaciate如果谁downvoted给出了一个理由我已经解决了答案。 – GiamPy

2

“细分”被定义为您的JSON文件的数组。根据意图,将其改为只是散列(删除方括号)或修改访问权限

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

伟大的信息 - 谢谢你:) – MWD