【问题标题】:Is it possible to iterate through a JSON to find if a property exists?是否可以遍历 JSON 以查找属性是否存在?
【发布时间】:2012-02-20 22:46:25
【问题描述】:

我正在尝试使用 google API 地理位置进行实验。

我注意到 JSON 并不总是相同的:有时地址是属性的子属性,有时不是。

例如,如果我想提取 PostalCode 的值,有时是:

...SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber

有时是:

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

没有办法知道值的确切路径。如何独立于其父项找到 PostalCodeNumber 的值?

【问题讨论】:

  • 我想说最快捷的方法是使用正则表达式来获取包含 PostalCodeNumber 的整个路径,然后将其传递给 eval。纯粹主义者可能会讨厌这样,但它应该有效,而且我认为它不会导致世界末日
  • 您使用的是 v2 API 吗?看看stackoverflow.com/a/3491048/171703
  • 听起来不错...如果我知道该怎么做...
  • 是的,仍然是 v2... 目前我无法更改为 v3
  • @Francesco,你为什么不能换到 v3?别忘了他们说过 v2 将在三年后消失!

标签: javascript json google-api google-maps-api-2


【解决方案1】:

在此处试用 inJSON 插件:http://danconnor.com/search-for-a-key-in-json-with-jquery-$.injson.html

注意:我以为我在这里看到了 jQuery 标记。你删除它还是我看到的东西?无论如何,将其转换为非 jQuery 会很容易。这是一个简单的递归函数。

【讨论】:

    【解决方案2】:

    把这个放在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 );
                        }
                    }
                }
            }
        }    
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2018-05-27
      • 2011-06-14
      • 2015-03-10
      相关资源
      最近更新 更多