在json中发送NaN

shr*_*yas 51 python json

我正在尝试编码一个包含浮点数的数组,并NaN使用Python 编译成JSON字符串json.dumps().

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

Tho*_*s K 41

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

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

  • 如何处理 `ValueError` 来序列化 numpy `Nan` 值? (2认同)

Sor*_*ren 16

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

您的编码器应该可能已将NaN编码为null.


eiT*_*aVi 16

尝试使用simplejson:

import simplejson as json
json.dumps(thing, ignore_nan=True)
Run Code Online (Sandbox Code Playgroud)

然后在代码中:

json.dumps(response, ignore_nan=True, default=datetime.datetime.isoformat)
Run Code Online (Sandbox Code Playgroud)

ignore_nan标志将正确处理所有NaN - > null转换

默认标志将允许simplejson正确解析您的日期时间.