如何从复杂的 JSON 结构中提取嵌套值?

Linda Hamilton
发布: 2024-11-02 15:53:29
原创
644 人浏览过

How do you extract nested values from a complex JSON structure?

提取嵌套的 JSON 值

问题:

解析 JSON 数据时,您可能会遇到像这样的复杂嵌套结构:

<code class="json">{'name': 'ns1:timeSeriesResponseType',
 'declaredType': 'org.cuahsi.waterml.TimeSeriesResponseType',
 'scope': 'javax.xml.bind.JAXBElement$GlobalScope',
 'value': {'queryInfo': {'creationTime': 1349724919000,
                          'queryURL': 'http://waterservices.usgs.gov/nwis/iv/',
                          'criteria': {'locationParam': '[ALL:103232434]',
                                       'variableParam': '[00060, 00065]'},
                          'note': [{'value': '[ALL:103232434]',
                                    'title': 'filter:sites'},
                                   {'value': '[mode=LATEST, modifiedSince=null]',
                                    'title': 'filter:timeRange'},
                                   {'value': 'sdas01', 'title': 'server'}]}},
 'nil': False, 'globalScope': True, 'typeSubstituted': False}</code>
登录后复制

您想要提取特定值,例如“creationTime”字段。

解决方案:

1。导航数据结构:

要提取“creationTime”值,我们需要使用键导航嵌套结构:

<code class="python">my_dict['key1']['key2']['key3']</code>
登录后复制

2。示例代码:

要获取 'creationTime' 值,请使用以下代码:

<code class="python">creation_time = my_dict['value']['queryInfo']['creationTime']</code>
登录后复制

3.确定数据路径:

要确定特定数据元素的路径,请检查 JSON 响应的结构:

  • JSON 中的每个键值对结构代表一个路径段。
  • 要访问嵌套值,只需用“[]”连接路径段即可。

4.更通用的方法:

如果遇到未知的嵌套 JSON 结构,可以使用递归函数来导航和检索所需的值:

<code class="python">def get_nested_value(data, path):
  if isinstance(data, dict):
    if path[0] in data:
      return get_nested_value(data[path[0]], path[1:])
    else:
      return None  # Raise an error if the key doesn't exist

  elif isinstance(data, list):
    if len(path) == 0:
      return data
    else:
      return get_nested_value(data[path[0]], path[1:])

  else:
    return data

value = get_nested_value(my_dict, ['value', 'queryInfo', 'creationTime'])</code>
登录后复制

以上是如何从复杂的 JSON 结构中提取嵌套值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!