2
我試圖寫一個使用JSON對象進行溝通,正在運行與自定義類的麻煩的程序。基本上我進入json.dumps的對象是一個大字典,大多隻是使用基本類(字符串,列表和其他字典居多),但在某些情況下,我有一個字符串映射到自定義類A的對象如何實現自定義類的默認序列化方法?
當我使用這些對象,我得到一個消息,如:
TypeError: <module.A object at 0x01659110> is not JSON serializable
我想要做的就是寫類型A的對象的默認編碼方法的對象是非常簡單,只包含一個標籤( str類型)和一些各種整數。標籤足以唯一標識A,所以如果json單獨使用標籤,那很好。
在線閱讀很多類似的問題後,我結束了:
class AEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, A):
return o.label
else:
return super(AEncoder, self).default(o)
的問題是,我得到的來源來自所有包括調用,比如:
AEncoder().encode(object)
這必須是所謂的傳遞對象到json.dumps()之前,但我沒有訪問對象事前。它隱藏在前面提到的大型字典中,有時不能被我訪問。我也嘗試實施的__repr__
功能,但我得到了同樣的錯誤。
因此...嘗試一個彙總版本:如何告訴json.dumps()
當我無法訪問傳入json.dumps()
的特定對象時,如何處理自定義類?
請讓我知道是否需要任何澄清。
,似乎工作,謝謝。 – Morag