我正在使用 JsonSerializable 接口来自定义我的 JSON 输出。我可以通过覆盖“序列化”方法来自定义 JSON 序列化。但我想知道还需要实现“serializeWithType”方法的场景。我找不到任何使用此方法的示例。有人可以通过示例帮助我了解此方法的需要吗?提前致谢。
问问题
3039 次
1 回答
6
serializeWithType()
如果类型的实例需要支持多态类型处理(直接,当 type has @JsonTypeInfo
; 或启用“默认类型”时),则需要。
典型的实现取决于你输出什么样的 JSON 结构;如果值被序列化为简单的标量(如 JSON 字符串),你会使用类似的东西:
// V here is whatever type 'this' is
@Override
public void serializeWithType(JsonGenerator jgen, SerializerProvider provider,
TypeSerializer typeSer)
throws IOException, JsonGenerationException
{
typeSer.writeTypePrefixForScalar(this, jgen, V.class);
serialize(value, jgen, provider);
typeSer.writeTypeSuffixForScalar(this, jgen);
}
而之所以需要这样的方法,仅仅是因为TypeSerializer
不知道自己会有什么样的JSON表示值;并且因为该表示决定了如何Type Id
包含(例如,只有 JSON 对象具有命名属性)。
于 2013-11-15T23:04:18.527 回答