在json中发送NaN

时间:2011-07-06 19:26:16

标签: python json

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

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

3 个答案:

答案 0 :(得分:38)

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

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

答案 1 :(得分:15)

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

中的规范

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

答案 2 :(得分:12)

尝试使用simplejson:

pip install simplejson

然后在代码中:

import simplejson

response = df.to_dict('records')
simplejson.dumps(response, ignore_nan=True,default=datetime.datetime.isoformat)

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

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