python - json.load 不允许加载 nan 和 inf 值
问题描述
如此处的文档中所示,
有人可以举例说明如何准确地使用parse_constant
withjson.load
以
避免加载inf
, -inf
,nan
值,这会引发一些Value error
异常,这样在执行时很容易完成json.dumps(allow_nan=False)
非常感激
解决方案
如果从文档中不清楚:
parse_constant,如果指定,将使用以下字符串之一调用:'-Infinity'、'Infinity'、'NaN'。如果遇到无效的 JSON 数字,这可用于引发异常。
这意味着它是一个以这 3 个字符串之一作为参数调用的函数,并且应该返回适当的值(或抛出我假设的错误)
def test(arg):
print("got:",arg)
c = {"-Infinity":-float("inf"), "Infinity":float("inf"), "NaN":float("nan")}
return c[arg]
json.loads('[Infinity, -Infinity, NaN]', parse_constant=test)
因此,为了确保它永远不会加载那些我认为你的功能只是raise ValueError("not allowed Infinity or NaN")
或类似的东西。
推荐阅读
- powerbi - Power BI:将重复表转换为参考表
- ruby-on-rails - 在 select 语句中有 3 个或更多列用于选择表不起作用
- spring - Spring Contract Maven 插件 pushStubsToScm 不起作用
- linux - 如何在pjsip中添加webrtc aec,在嵌入式Linux上运行
- android - Android 上 Firebase Crashlytics 的本机堆栈跟踪
- django - Django:重定向不起作用
- angular - Moment js 导入无法与 Angular 一起正常工作
- html - 线性渐变不完全应用于背景
- html - HTML:表单上传文件
- java - 对象和实例是同一个东西吗?