キーが文字列で、値が MyObject オブジェクトのリストである Python 辞書があります。私が実行すると
simplejson.dumps(dict)
「MyObject not JSON serializable」をスローします。
この例外を回避するにはどうすればよいですか? また、MyObject をシリアライズ可能にするにはどうすればよいですか?
キーが文字列で、値が MyObject オブジェクトのリストである Python 辞書があります。私が実行すると
simplejson.dumps(dict)
「MyObject not JSON serializable」をスローします。
この例外を回避するにはどうすればよいですか? また、MyObject をシリアライズ可能にするにはどうすればよいですか?
シリアライズ可能にするMyObject
には、で参照できるメソッドを実装する必要がありますdumps
。例えば:
class MyObject:
# ...
# MyObject has 3 properties: name (a string), number (an int), and parent (a MyObject)
@staticmethod
def serialize(obj):
return {
"name": obj.name,
"number": obj.number,
"parent": obj.parent
}
# ...
simplejson.dumps(myObjInstance, default=MyObject.serialize)
すばらしいのはdumps
、他のすべてのJSONシリアル化可能オブジェクトと同様に、シリアル化メソッドを再帰的に呼び出すことです。つまり、obj.parent
それ以上のアクションなしで、同様にシリアル化されます。
インスタンス変数名をそれぞれの値に1-1マップするだけの場合は、組み込みのPythonマジックを使用できます。より複雑なオブジェクトをシリアル化する場合は常に(ここでも、1-1の可変値マップのみを使用して)、次の行を呼び出すだけです。
simplejson.dumps(anyObj, default=lambda obj: obj.__dict__)
の特定のインスタンスでは、前述のメソッドMyObject
と同じように動作します。serialize