首頁 >後端開發 >Python教學 >如何從複雜的 JSON 結構中提取巢狀值?

如何從複雜的 JSON 結構中提取巢狀值?

Linda Hamilton
Linda Hamilton原創
2024-11-02 15:53:29692瀏覽

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

擷取巢狀的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>

問題:

當您解析JSON 資料時,您解析JSON可能會遇到像這樣的複雜嵌套結構:

您想要提取特定值,例如「creationTime」欄位。

解:
<code class="python">my_dict['key1']['key2']['key3']</code>

1。導航資料結構:

要擷取「creationTime」值,我們需要使用鍵導航巢狀結構:
<code class="python">creation_time = my_dict['value']['queryInfo']['creationTime']</code>

2。範例程式碼:

要取得'creationTime' 值,請使用以下程式碼:
  • 3.決定資料路徑:

要確定特定資料元素的路徑,請檢查JSON 回應的結構:

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>
4.更通用的方法:如果遇到未知的嵌套JSON 結構,可以使用遞歸函數來導航和檢索所需的值:

以上是如何從複雜的 JSON 結構中提取巢狀值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn