首页 >后端开发 >Python教程 >如何从复杂的 JSON 结构中提取嵌套值?

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

Linda Hamilton
Linda Hamilton原创
2024-11-02 15:53:29693浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn