2011-07-06 58 views
36

我正在嘗試使用json.dumps()將包含浮動數組和NaN的數組編碼爲Python中的JSON字符串。在json中發送NaN

但編碼的JSON字符串未在PHP中成功解碼。 NaN是否會導致此問題?我該如何解決這種情況?

+0

輸出的JSON是什麼樣的? NaN不是Python中的本地數據類型,所以我很驚訝它可以工作。 –

+4

@丹尼爾:其實,如果你做'浮動(「南」)',你可以得到它。並調用'json.dumps(float(「nan」))'給你「NaN」。 –

回答

29

json.dumps有一個allow_nan參數,默認爲True。

NaN,Infinity和-Infinity不是JSON的一部分,但它們在Javascript中是標準的,所以它們是常用的擴展。如果收件人無法處理它們,請設置allow_nan=False。但是當你嘗試序列化NaN時,你會得到ValueError。

11

楠不是一個有效的JSON符號,請參閱該規範在http://json.org/

您的編碼應該可能已經在編碼爲NaN null代替。

+0

json編碼的字符串只包含nan只有 – shreyas

+0

您必須解決該問題,請參閱手冊http://docs.python.org/library/json.html#basic-usage – Soren

8

嘗試使用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正確解析日期。