2017-11-28 8 views
0

私は、Python 3.5でこのクラスがあります。このクラスがJSonをシリアル化できないのはなぜですか?

class DataPoint(object): 

    def __init__(self, time, value): 
     self.time = time 
     self.value = value 

を私がやって、インスタンスからJSONを作成しようとすると:

json.dumps(intance_of_datapoint) 

を私はエラーを取得:

TypeError: < DataPoint object at 0x> is not JSon Serializable 

だから私は、このようにreprメソッドを上書きするクラスを改善しようとしました:

私が得ることにすれば
class DataPoint(object): 

    def __init__(self, time, value): 
     self.time = time 
     self.value = value 

    def __str__(self): 
     return json.dumps(self.__dict__) 

    __repr__ = __str__ 

TypeError: {"value":52.29, "time":1} is not JSon serializable. 

でき君たちは私がなぜundestandに役立ちますか? 私はここでかなり失われています。

答えて

1

インスタンスをpython dictで変換してから、そのdictをjson.dumps(instance_dict)にダンプする必要があります。なぜなら、jsonは独自のデータ型を持ち、Pythonユーザー定義クラスはjsonにシリアル化できないからです。

+0

それはトリックでした! Jsonエンコーダがジョブを実行せず、見つかったすべてのオブジェクトに対して._ _dict_ _を呼び出すのはなぜかと思います。 – cgajardo

+0

私の答えがあなたを助けるならば、それをupvoteすることができます。 –

関連する問題