2012-02-20 100 views
1

我正在尝试使用google API地理位置进行实验。是否可以遍历JSON来查找属性是否存在?

我注意到JSON并不总是一样的:有时地址是一个属性的孩子,有时不是。

例如,如果我想提取例如POSTALCODE的价值,它有时:

...SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber 

有时是:

...AdministrativeArea.DependentLocality.Locality.PostalCode.PostalCodeNumber 

没有办法知道确切的路径OT价值。我怎样才能找到PostalCodeNumber独立于其父母的价值?

+0

我想说的最快捷的方式是使用正则表达式来获得,其中包括POSTALCODENUMBER整个路径,然后传递到EVAL。纯粹主义者可能会讨厌这个问题,但它应该有效,而且我认为这不会导致世界结束 – 2012-02-20 22:51:32

+0

您是否使用v2 API?看看http://stackoverflow.com/a/3491048/171703 – akiller 2012-02-20 22:52:17

+0

听起来不错...如果我知道如何做到这一点... – Francesco 2012-02-20 22:52:44

回答

0

把这个JSFiddle你去尝试

function GetPropIn(obj, prop) 
{ 
    for(sProperty in obj) 
    { 
     if(obj.hasOwnProperty(sProperty)) 
     { 
      if(sProperty == prop) 
      { 
       return(obj[sProperty]); 
      } 
      else 
      { 
       if(typeof(obj[sProperty]) == "object") 
       { 
        var res = GetPropIn(obj[sProperty], prop); 
        if(res) 
        { 
         return(res); 
        } 
       } 
      } 
     } 
    }  
}