我正在尝试使用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提交拉取请求以启用它)。

09-09 17:26