ホームページ > バックエンド開発 > Python チュートリアル > 複雑な JSON 構造からネストされた値を抽出するにはどうすればよいでしょうか?

複雑な JSON 構造からネストされた値を抽出するにはどうすればよいでしょうか?

Linda Hamilton
リリース: 2024-11-02 15:53:29
オリジナル
686 人が閲覧しました

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート