以 json 形式发送 NaN

发布于 2024-11-19 04:19:32 字数 140 浏览 2 评论 0原文

我正在尝试使用 json.dumps() 将包含浮点数和 NaN 的数组编码为 Python 中的 JSON 字符串。

但编码的 JSON 字符串在 PHP 中未成功解码。是 NaN 导致了这个问题吗?我该如何解决这种情况?

I am trying to encode an array which contains floats and NaN into JSON string from Python using json.dumps().

But the encoded JSON string is not being decoded successfully in PHP. Is the NaN causing this problem? How can I work around this situation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

在梵高的星空下 2024-11-26 04:19:32

json.dumps 有一个 allow_nan 参数,默认为 True。

NaN、Infinity 和 -Infinity 不是 JSON 的一部分,但它们是 Javascript 中的标准,因此它们是常用的扩展。如果收件人无法处理它们,请设置 allow_nan=False。但是当你尝试序列化 NaN 时,你会得到 ValueError 。

json.dumps has an allow_nan parameter, which defaults to True.

NaN, Infinity and -Infinity are not part of JSON, but they are standard in Javascript, so they're commonly used extensions. If the recipient can't handle them, set allow_nan=False. But then you'll get ValueError when you try to serialise NaN.

携余温的黄昏 2024-11-26 04:19:32

Python 标准 json 包所基于的 simplejson 包运行得更快,并且可以处理这种情况。 NaN 不是有效的 JSON,ignore_nan 标志将正确处理所有 NaNnull 的转换。

import simplejson as json
json.dumps(thing, ignore_nan=True)

default 参数将允许 simplejson 正确解析您的日期时间。

json.dumps(response, ignore_nan=True, default=datetime.datetime.isoformat)

simplejson 可以使用 pip 安装。

pip install simplejson

The simplejson package on which Python's standard json package is based moves more quickly, and handles this situation. NaN is not valid JSON, and the ignore_nan flag will handle correctly all NaN to null conversions.

import simplejson as json
json.dumps(thing, ignore_nan=True)

The default parameter will allow simplejson to parse your datetimes correctly.

json.dumps(response, ignore_nan=True, default=datetime.datetime.isoformat)

simplejson can be installed with pip.

pip install simplejson
紫南 2024-11-26 04:19:32

NaN 不是有效的 JSON 符号,请参阅 http://json.org/ 上的规范

您的编码器可能应该将 NaN 编码为 null 相反。

NaN is not a valid JSON symbol, see the spec at http://json.org/

Your encoder should probably have encoded the NaN as null instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文