我一直在使用simplejson
模块来正确处理所有NaN -->空转换(从python到json(。具体说来:
- 我一直在
simplejson.dump
函数中使用ignore_nan=True
标志(。 - 我似乎找不到等效的功能,即从 JSON null 到 nan - 带有
simplejson.load
函数。默认值似乎是读取空值以None
.
如何做到这一点?
对于它的价值 - 我最终制作了以下函数来实现我想要的(需要math
模块(:
def convert(d):
if isinstance(d,dict):
yield {k:v for k,v in dict_convert(d)}
elif isinstance(d,list):
yield list_convert(d)
else:
yield d
def list_convert(d):
return [math.nan if i is None else i for i in d]
def dict_convert(d):
for key, value in d.items():
yield key, [i for i in convert(value)][0]
#d_in = JSON data, containing nulls
#d_out = JSON data, with null converted to nan
d_out = [i for i in test_opennem.convert(d_in)][0]
似乎适用于我的任何d_in
JSON 结构(无论有多少嵌套组件(......虽然没有经过广泛测试,可能不适合所有情况等。
也只将列表中的空值转换为 NaN(不是字典键或其他字符串到 NaN( - 这在我的情况下也很好。