如何在深层嵌套的json文件中搜索密钥的所有出现?

时间:2016-04-07 19:12:52

标签: python json parsing

我希望能够使用其中的一个键在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。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望以递归方式遍历嵌套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)