杰克逊在将对象序列化为json时包含'class'字段

时间:2013-04-01 09:59:17

标签: json jackson

我需要我的Grails应用程序与使用Jackson的客户端进行通信(JSON)。默认情况下,Grails在生成的json中包含“class”。另一方面,默认杰克逊的ObjectMapper不承认'类',它会引发错误。

通过在正在使用的每个POJO类上添加@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class"),我找到了解决方案。

但是,我不喜欢这种方法。因为现在我的POJO将依赖杰克逊的罐子。还有另一个简单的选择吗?

我试图从objectMapper.getSerializationConfig(). ...中找出答案,但仍无法找到替换该注释的替代方法。

由于

1 个答案:

答案 0 :(得分:2)

您是使用类型信息进行多态实例化还是忽略了这些信息?您可以在课程中使用@JsonIgnoreProperties({"class"})

如果您真的不想在类中添加注释,可以使用混合机制。虽然将注释直接添加到类中会更容易,但是如果你控制了课程的话。

mapper.addMixInAnnotations(YourClass.class, TypeInfoMixIn.class);
mapper.addMixInAnnotations(YourSecondClass.class, TypeInfoMixIn.class);
// etc.

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class")
public class TypeInfoMixIn {}