我正在尝试使用Python3中的ujson
模块对数字进行序列化。其中一些值为NaN
。
使用标准json
模块时,一切正常。
import json
json.dumps(float('NaN'))
给出:
'NaN'
但是
ujson
存在问题。import ujson
ujson.dumps(float('NaN'))
引发异常:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: Invalid Nan value when encoding double
出于性能原因,我正在使用
ujson
。我是否必须用字符串NaN
替换结构中所有出现的'NaN'
,或者有没有办法告诉ujson
处理NaN
而不抛出异常?关于无限性,我也有同样的问题。我找不到任何相关文档。
最佳答案
根据定义JSON格式的RFC4627,在第2.4节中关于数字的内容:
因此,与标准库中的ujson
模块相比,json
与JSON标准更加兼容。根据我的说法,此结果不必要地过于繁琐,但ujson
的选择要符合此标准。您可以阅读有关此here的更多信息。
似乎唯一的方法是先转换数据(或向ujson
提交拉取请求以启用它)。