我有一個自定義類,讓我們調用是類ObjectA(),它有一堆函數,屬性等..,我想序列化對象使用Python中的標準JSON庫,我有什麼要實現這個對象將序列化爲JSON,而無需編寫自定義編碼器?做一個自定義類JSON可序列化
謝謝
我有一個自定義類,讓我們調用是類ObjectA(),它有一堆函數,屬性等..,我想序列化對象使用Python中的標準JSON庫,我有什麼要實現這個對象將序列化爲JSON,而無需編寫自定義編碼器?做一個自定義類JSON可序列化
謝謝
子類json.JSONEncoder,然後構造一個合適的字典或數組。
請參閱 「擴展JSONEncoder」 的背後this link
像這樣:
>>> class A: pass
...
>>> a = A()
>>> a.foo = "bar"
>>> import json
>>>
>>> class MyEncoder(json.JSONEncoder):
... def default(self, obj):
... if isinstance(obj, A):
... return { "foo" : obj.foo }
... return json.JSONEncoder.default(self, obj)
...
>>> json.dumps(a, cls=MyEncoder)
'{"foo": "bar"}'
'沒有寫入自定義編碼器' – Ford
沒有自定義編碼器是不可能的。如果問題的前提是json不知道如何對其進行編碼,那麼任何解決方案都將涉及一個自定義編碼器。也許不是擴展了JSONEncoder的一個 - 你可以寫一個簡單的f()將一個對象映射到一個字典 - 但是如果不是自定義編碼器,那會是什麼呢? – FrobberOfBits
應該提到,在你的回答中,OP知道這是不可能的,以及其他選項(如果有)。對不起,如果我有點粗魯。 – Ford
也許這個問題的欺騙:http://stackoverflow.com/questions/3768895/python-how-to-make -a-class-json-serializable – dano