以 json 形式发送 NaN
我正在尝试使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
json.dumps
有一个allow_nan
参数,默认为 True。NaN、Infinity 和 -Infinity 不是 JSON 的一部分,但它们是 Javascript 中的标准,因此它们是常用的扩展。如果收件人无法处理它们,请设置
allow_nan=False
。但是当你尝试序列化 NaN 时,你会得到 ValueError 。json.dumps
has anallow_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.Python 标准 json 包所基于的 simplejson 包运行得更快,并且可以处理这种情况。
NaN
不是有效的 JSON,ignore_nan
标志将正确处理所有NaN
到null
的转换。default
参数将允许 simplejson 正确解析您的日期时间。simplejson 可以使用 pip 安装。
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 theignore_nan
flag will handle correctly allNaN
tonull
conversions.The
default
parameter will allow simplejson to parse your datetimes correctly.simplejson can be installed with pip.
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.