【发布时间】:2020-07-01 15:14:58
【问题描述】:
用于 JSON 的 Python3 标准库 https://docs.python.org/3/library/json.html 记录了以下内容(重点是我的):
如果allow_nan 为假(默认:真),那么它将是一个ValueError 序列化超出范围的浮点值(nan、inf、-inf)严格 符合 JSON 规范。如果 allow_nan 为真,则它们的 将使用 JavaScript 等效项(NaN、Infinity、-Infinity)。
进一步了解编码器:
如果 allow_nan 为 true(默认值),则为 NaN、Infinity 和 -Infinity 将被如此编码。 此行为不是 JSON 规范 兼容,但与大多数基于 JavaScript 的编码器和 解码器。否则,对这些浮点数进行编码将是一个 ValueError。
虽然对于那些能够故意解析 NaN 的人来说,这很好,但为什么 Python 不遵循 JSON 规范作为默认值?
【问题讨论】:
-
"...但与大多数基于 JavaScript 的编码器和解码器一致"。这就是为什么。在实践中有用比在技术上正确和遵守标准更重要,因为这样做会破坏您可能必须与之交互的其他事情。
-
可能是因为“但与大多数(强调我的)基于 JavaScript 的编码器和解码器一致”。
-
@GreenCloakGuy 我来这里是因为 Python 的行为导致它通过无法用多种语言解析的 API 发出无效数据。遵循这个标准几乎不会破坏事情。
-
@BookOfGreg 您能否更具体地说明导致问题的行为是什么?
标签: python json python-3.x