繁体   English   中英

如何在深度嵌套的 json 文件中搜索所有出现的键?

[英]How to search for all occurences of a key in a deeply nested json file?

我希望能够使用它拥有的键之一在 json 文件中找到所有出现的特定 json 对象。 例如,如果我有以下 json 块:

{
                  "FNMIP": 1,
                  "FNMIT": 0,
                  "FNMP": {
                    "DP": {
                      "DT": 0,
                      "UF": true,
                      "DF": "yyyyMMdd"
                    },
                    "FP": {
                      "FE": null
                    }
                  },
                  "IE": true,
                  "$": "PMF"
                }

我想搜索包含此键的所有 json 块,然后应用某种逻辑将其替换为另一个 json 对象。 我不知道如何在 Python 中做这些事情,因为我是 Python 的新手。

如果我理解正确,您想递归地遍历嵌套的dict并且对于与特定值匹配的任何值,将其替换为其他值。 所以这样做:

def recursive_replace(data,match,repl):
    for k,v in data.items():
        if v == match:
            data[k] = repl #replace the matched value
        elif isinstance(v,dict):
            recursive_replace(v,match,repl)

然后你可以将数据转换回json。

要测试数据中是否存在"$"键,您可以使用in运算符:

def recursive_replace(data,repl):
    for k,v in data.items():
        if not isinstance(v,dict):
            continue
        elif "$" in v:
            data[k] = repl
        else:
            recursive_replace(v,repl)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM