自定义Json(反)序列化?
我正在把一些代码从 .Net 转到 Python。
在某个时候,我们需要把复杂的 JSON 从一种格式转换成另一种格式。
比如:
{"Query":
{
"Boolean": {
"Operator": "And",
"Parameters": [
{"Equal": {"Name": "Bob"}},
{"Boolean": ...}
]
}
}
}
转换成...
{"Query":
{
"Left": {"Name":"Bob"},
"Right": {...},
"Operator": "And"
}
}
我们之前使用 Json.Net 提供的很棒的 Newtonsoft.Json.JsonConverter
来处理序列化和反序列化的过程。我们有两个 JsonConverter
,可以在这两种格式之间转换相同的对象。
Public Overrides Function CanConvert(objectType As Type) As Boolean
Return GetType(QueryDefinition).IsAssignableFrom(objectType)
End Function
这意味着我们可以手动处理我们想要的部分,而让默认的转换器处理那些我们不需要特别处理的属性和数值。
在 Python 中有没有类似的机制或框架?还是说我必须递归地手动解析每一个属性?
1 个回答
4
你可以创建一个自己的 JSONEncoder 类。
来源: http://docs.python.org/2/library/json.html
"如果你想使用一个自定义的 JSONEncoder 类(比如说,重写 default() 方法来处理额外的数据类型),可以通过 cls 这个参数来指定;如果不指定,就会使用默认的 JSONEncoder。"