如何移除嵌套JSON冗余键?Python临时修复JSON格式问题
修复嵌套的
derivationValue字段格式问题 最近碰到个JSON格式不匹配的问题:原本预期derivationValue是一个直接的取值,但实际返回的却是嵌套的键值对,多了一层冗余的键。举个实际例子:
原始不符合要求的JSON:
{ "derivationName": "other_lob_subcd", "derivationValue": { "OOP3": "TENANT" } }我们需要把它转换成两种合规格式之一:
- 直接提取嵌套里的值:
{ "derivationName": "other_lob_subcd", "derivationValue": "TENANT" }- 合并键值为字符串(比如键值用分隔符拼接):
{ "derivationName": "other_lob_subcd", "derivationValue": "OOP3:TENANT" }
基于@Diana Ayala的思路,我调整了代码来处理这种可变键的情况——毕竟我们没法提前知道嵌套里的键叫什么。这里给出修正后的可行代码:
# 遍历结果中的每个推导输出项 for item in data['mcsResults']['derivationsOutput']: # 检查当前项的derivationValue是否是嵌套字典 if isinstance(item['derivationValue'], dict): # 方案1:提取嵌套字典里的第一个值(适配单键值对场景) item['derivationValue'] = next(iter(item['derivationValue'].values())) # 如果需要方案2:合并键和值为字符串,替换上面一行为下面这行 # item['derivationValue'] = ":".join(next(iter(item['derivationValue'].items())))
代码说明:
- 首先直接遍历
derivationsOutput列表里的每个元素(原代码的for k,v in ...写法有误,因为这里是列表而非字典的键值对集合) - 用
isinstance判断derivationValue是否为字典类型,避免误处理正常的直接取值 - 用
next(iter(dict.values()))可以快速获取嵌套字典的第一个值,不管键是什么名字,完美适配可变键的场景 - 如果需要合并键值,就用
":".join(next(iter(dict.items())))把键和值用分隔符拼接成字符串
内容的提问来源于stack exchange,提问作者RagePwn
相关产品推荐
相关产品推荐

