首页 > 解决方案 > 通过嵌套的 JSON 键解析

问题描述

我有一个如下所示的 JSON 文件:

data = {
    "x": {
        "y": {
            "key": {

            },
            "w": {

            }
}}}

并已将其转换为 python 中的字典,以便他们使用以下代码对其进行解析以查找键:

entry = input("Search JSON for the following: ") //search for "key"
if entry in data:
  print(entry)
else:
  print("Not found.")

但是,即使我输入“key”作为条目,它仍然返回“未找到”。我是否需要控制数据的深度,如果我不知道“key”的位置但仍想搜索它怎么办。

标签: pythonjsonnested

解决方案


您的方法不起作用,因为key不是data. data有一把钥匙:x. 因此,您需要查看字典,看看键是否在其中。如果没有,您可以将下一级字典递归地传递回函数。这将找到第一个匹配的键:

data = {
    "x": {
        "y": {
            "key": "some value",
            "w": {}
}}}

key = "key"

def findValue(key, d):
    if key in d:
        return d[key]
    for v in d.values():
        if isinstance(v, dict):
            found = findValue(key, v)
            if found is not None:
                return found

findValue(key, data)  
# 'some value'

None如果找不到您的密钥,它将返回


推荐阅读