Python JSON编码器将NaN改为'null'

我正在编写代码以接收能够转换为JSON的任意对象(可能是嵌套的)。

Python内置JSON编码器的默认行为是将NaN转换为NaN,例如json.dumps(np.NaN)结果为NaN。如何将此NaN值更改为'null'

我试图继承JSONEncoder并重写default()方法,如下所示:

from json import JSONEncoder, dumps

import numpy as np

class NanConverter(JSONEncoder):

def default(self, obj):

try:

_ = iter(obj)

except TypeError:

if isinstance(obj, float) and np.isnan(obj):

return "null"

return JSONEncoder.default(self, obj)

>>> d = {'a': 1, 'b': 2, 'c': 3, 'e': np.nan, 'f': [1, np.nan, 3]}

>>> dumps(d, cls=NanConverter)

'{"a": 1, "c": 3, "b": 2, "e": NaN, "f": [1, NaN, 3]}'

预期结果: '{"a": 1, "c": 3, "b": 2, "e": null, "f": [1, null, 3]}'

回答:

这似乎实现了我的目标:

import simplejson

>>> simplejson.dumps(d, ignore_nan=True)

Out[3]: '{"a": 1, "c": 3, "b": 2, "e": null, "f": [1, null, 3]}'

以上是 Python JSON编码器将NaN改为'null' 的全部内容, 来源链接: utcz.com/qa/426909.html

回到顶部