我正在将一些代码从.Net移植到python。

一方面,我们需要将任意复杂的json从一种格式转换为另一种格式。

例如:

{"Query":
    {
        "Boolean": {
            "Operator": "And",
            "Parameters": [
                {"Equal": {"Name": "Bob"}},
                {"Boolean": ...}
            ]
        }
    }
}


至...

{"Query":
    {
        "Left": {"Name":"Bob"},
        "Right": {...},
        "Operator": "And"
    }
}


我们使用了Json.Net出色的Newtonsoft.Json.JsonConverter来进行序列化/反序列化过程。我们有2个JsonConverter,它们可以将相同的对象与每种格式进行相互转换。

Public Overrides Function CanConvert(objectType As Type) As Boolean
    Return GetType(QueryDefinition).IsAssignableFrom(objectType)
End Function


这意味着我们可以挑选出我们想要手动处理的位,并允许库存转换器执行不需要特别处理的所有属性/值。

Python中是否有任何等效的机制/框架?还是我必须递归地手动解析每个属性?

最佳答案

您可以继承默认的JSONEncoder。

发件人:http://docs.python.org/2/library/json.html

“要使用自定义JSONEncoder子类(例如,一个覆盖default()方法以序列化其他类型的子类),请使用cls kwarg对其进行指定;否则,将使用JSONEncoder。

http://docs.python.org/2/library/json.html#json.JSONEncoder

用法示例:Custom JSON encoder in Python 2.7 to insert plain JavaScript code

关于python - 自定义Json(反)序列化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15473622/

10-14 17:26
查看更多