gpt4 book ai didi

python - 使用 Python 的 ujson 模块的 JSON 转储非数字 float

转载 作者:太空狗 更新时间:2023-10-29 23:58:56 32 4
gpt4 key购买 nike

我正在尝试使用 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 而不抛出异常?

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

最佳答案

根据RFC4627定义 JSON 格式,在 2.4 部分关于数字:

Numeric values that cannot be represented as sequences of digits (such as Infinity and NaN) are not permitted.

所以 ujson 比标准库中的 json 模块更符合 JSON 标准。这个结果在我看来是多余的迂腐,但是选择ujson就是为了符合这个标准。您可以阅读更多相关信息 here .

看来只能先转换数据(或者提交pull request到ujson启用)。

关于python - 使用 Python 的 ujson 模块的 JSON 转储非数字 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334418/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com