python - 使用 json 解析空字符串
问题描述
我想知道是否有一种方法可以使用json.loads
以自动将空字符串转换为其他内容,例如None
.
例如,给定:
data = json.loads('{"foo":"5", "bar":""}')
我想拥有:
data = {"foo":"5", "bar":None}
代替:
data = {"foo":"5", "bar":""}
解决方案
您可以使用字典理解:
data = json.loads('{"foo":"5", "bar":""}')
res = {k: v if v != '' else None for k, v in data.items()}
{'foo': '5', 'bar': None}
这只会处理嵌套字典的第一级。您可以使用递归函数来处理更通用的嵌套字典情况:
def updater(d, inval, outval):
for k, v in d.items():
if isinstance(v, dict):
updater(d[k], inval, outval)
else:
if v == '':
d[k] = None
return d
data = json.loads('{"foo":"5", "bar":"", "nested": {"test": "", "test2": "5"}}')
res = updater(data, '', None)
{'foo': '5', 'bar': None,
'nested': {'test': None, 'test2': '5'}}
推荐阅读
- python - 将列传递给具有多个条件的函数 - Python Pandas
- asp.net-core - 如何使“发生一个或多个验证错误”引发异常?
- java - 尝试在 macOS Catalina 上安装 Spring Tools App 4.7.0
- android - 在所有页面打开时运行的功能
- python - 使 tkinter 标签以设定的时间间隔刷新
- twitter-bootstrap - 使用 @use 配置 Bootstrap Sass 变量,同时使引导成员在当前模块中可用
- java - 您如何在 UML(类图)中将集合(arrayList、vector 等)编写为属性?
- excel - 有没有办法在 Excel 单元格中获得惰性/缓存评估?
- python - 根据匹配值加入两个 pyspark 数据帧(直到某个小数点)
- aframe - 使用超过 2 个标记预设