在simplejson.load()中将JSON null转换为nan



我一直在使用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( - 这在我的情况下也很好。

最新更新