Python - 从解码的 JSON 数据中删除 "empty"值 ('[]' 和 '""')

标签 python json

在 Python 脚本中,我运行 json_decoded = json.load(file)这会产生以下 JSON 数据:

json_decoded = {
  "data": {
    "keyA": [
      {
        "subkeyA1": "valueA1",
        "subkeyA2": "valueA2"
      },
      {
        "subkeyA3": ""
      }
    ],
    "keyB": []
  }
}

我想删除所有[]"" (“空”)键值对,因此具有:

json_decoded = {
  "data": {
    "keyA": [
      {
        "subkeyA1": "valueA1",
        "subkeyA2": "valueA2"
      }
    ]
  }
}

我怎样才能拥有它?

注意:我对 Python (v2.7.3) 还很陌生。

最佳答案

可以使用递归来遍历结构:

json_decoded = {'data': {'keyA': [{'subkeyA1': 'valueA1', 'subkeyA2': 'valueA2'}, {'subkeyA3': ''}], 'keyB': []}}
def remove_empty(d):
  final_dict = {}
  for a, b in d.items():
     if b:
       if isinstance(b, dict):
         final_dict[a] = remove_empty(b)
       elif isinstance(b, list):
         final_dict[a] = list(filter(None, [remove_empty(i) for i in b]))
       else:
         final_dict[a] = b
  return final_dict

print(remove_empty(json_decoded))

输出:

{'data': 
  {'keyA': 
     [{'subkeyA1': 'valueA1', 
       'subkeyA2': 'valueA2'}
    ]
  }
}

关于Python - 从解码的 JSON 数据中删除 "empty"值 ('[]' 和 '""'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848481/

相关文章:

python - 将特征哈希应用于 DataFrame 中的特定列

java - 无法反序列化 JSON 响应

javascript - 使用socket io发送和获取数据的两条指令

ios - 如何在 JSON 中制作字典字典?

json - Node 包 - 是否可以在 package.json 中插入变量?

python - Bootstrap 模态不更新模态内容

python - 从Python文件中读取数组

python - 如何打包命令行 Python 脚本

python - 计算列表python中的列表出现次数

json - 解析大于内存的 JSON 字符串