Python JSON で入れ子になった値を取得する方法を教えてください

在Python中,要取得JSON数据中多层嵌套的值,可以使用以下方法:

  1. インデックスもしくはキー名を使用して階層を最下層まで順に値にアクセスする
  2. 使用递归函数,遍历每一层的值,直到找到目标层级。
  3. JSON データを解析するための JSONPath ライブラリを使用すると、指定したパスに基づいてターゲット値を直接取得できます。

以下に、上述の方法を使用して作成したサンプルコードを示します。

方法一:通过索引或键名访问每一层的值

import json

data = {
    "key1": {
        "key2": {
            "key3": "value"
        }
    }
}

# 通过索引或键名依次访问每一层的值
value = data["key1"]["key2"]["key3"]
print(value)  # 输出: value

再帰関数で各階層の値を巡回する方法

import json

data = {
    "key1": {
        "key2": {
            "key3": "value"
        }
    }
}

# 递归函数遍历每一层的值
def get_value(obj, target_key):
    if isinstance(obj, dict):
        for key, value in obj.items():
            if key == target_key:
                return value
            else:
                result = get_value(value, target_key)
                if result is not None:
                    return result
    elif isinstance(obj, list):
        for item in obj:
            result = get_value(item, target_key)
            if result is not None:
                return result

value = get_value(data, "key3")
print(value)  # 输出: value

方法三:jsonpathライブラリを使用してターゲット値を取得する

import json
from jsonpath_ng import parse

data = {
    "key1": {
        "key2": {
            "key3": "value"
        }
    }
}

# 使用jsonpath库获取目标值
jsonpath_expression = parse("$.key1.key2.key3")
value = [match.value for match in jsonpath_expression.find(data)][0]
print(value)  # 输出: value

jsonpathライブラリを使用するには、Pythonにインストールする必要があります。以下のコマンドを使用してインストールできます。

pip install jsonpath-ng
bannerAds