首页 > 解决方案 > Python删除嵌套的JSON键或将键与值组合

问题描述

我不正确地接收 json 文件,并试图创建一个临时修复程序,直到文件以正确的格式出现。不是将值设置为 derivationsValue 键,而是将其设置为键值对,因此存在一个无关键。我想将内部值设置为外部键。

{        
  "derivationName": "other_lob_subcd",
  "derivationValue": {
     "OOP3": "TENANT"
  }
}

鉴于上面的json,我希望结果是

{        
  "derivationName": "other_lob_subcd",
  "derivationValue": "TENANT"
}

我也可以一起生活

{        
   "derivationName": "other_lob_subcd",
   "derivationValue": "OOP3-TENANT"
}

或类似的东西。它不能是另一个 json 元素。

基于@Diana Ayala 的回答,我写了这篇文章来尝试用变量键解决问题。

    for k,v in data['mcsResults']['derivationsOutput']:
        if isinstance(k['derivationValue'], dict):
            for sk, sv in k['derivationValue']:
                k['derivationValue'] = sv

标签: pythonjson

解决方案


您可以使用以下通用代码来满足您的要求。

import json

filePath = 'file.json'

def getValue(value):
    if type(value) is dict:
        ans = list(value)[0]
        for k in value:
            ans += '-'+getValue(value[k])
        return ans
    return value

def correct(data):
    for key in data:   
        data[key] = getValue(data[key]) 
    return data

if __name__ == "__main__":
    with open(filePath) as fp:
        data = json.load(fp)
        data = correct(data)
        print (data)

输出:

D:\>python file.py
{'derivationName': 'other_lob_subcd', 'derivationValue': 'OOP3-TENANT'}

推荐阅读