python - 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
解决方案
您可以使用以下通用代码来满足您的要求。
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'}
推荐阅读
- xcode - 您可以/应该在 Xcode 的 xcassets 中存储多少图像?
- unity3d - 我受到伤害但我看不到动画
- python - ValueError: Traceback(最近一次调用最后一次)
在 () - c++ - 如何动态跟踪OpenGL中的纹理单元?
- python - TensorFlow TOCO python API
- jenkins - 使用 Docker 代理 args 的变量时无法指定标志?
- ubuntu - 在 UBUNTU 下安装 Lazarus
- python - Python:运行函数将值附加到空列表不返回值
- arrays - 根据最长列vba的长度隐藏行
- php - 年龄计算 & 如果在里面,如果不工作 / php