JSON使用Python的ujson模块转储非数字浮点数

Tre*_*reg 6 python json dump nan infinity

我正在尝试使用ujsonPython3中的模块序列化数字.一些值是NaNs.

使用标准json模块时,一切正常.

import json
json.dumps(float('NaN'))
Run Code Online (Sandbox Code Playgroud)

得到:

'NaN'
Run Code Online (Sandbox Code Playgroud)

但是有一个问题ujson.

import ujson
ujson.dumps(float('NaN'))
Run Code Online (Sandbox Code Playgroud)

抛出异常:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: Invalid Nan value when encoding double
Run Code Online (Sandbox Code Playgroud)

ujson出于性能原因使用.我是否必须用NaN字符串替换我的结构中的所有出现'NaN',或者有没有办法告诉ujson处理NaNs而不抛出异常?

我对无穷大也有同样的问题.我无法找到任何相关的文档.

enr*_*cis 6

根据定义JSON格式的RFC4627,在2.4节中关于数字:

不允许使用不能表示为数字序列(例如InfinityNaN)的数字值.

因此ujson更符合JSON标准,然后是json标准库中的模块.据我说这个结果不必要迂腐,但选择ujson是符合这个标准.你可以在这里阅读更多相关信息.

似乎唯一的方法是在之前转换数据(或提交拉取请求ujson以启用它).