我需要我的Grails应用程序与使用Jackson的客户端进行通信(JSON)。默认情况下,Grails在生成的json中包含“class”。另一方面,默认杰克逊的ObjectMapper
不承认'类',它会引发错误。
通过在正在使用的每个POJO类上添加@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="class")
,我找到了解决方案。
但是,我不喜欢这种方法。因为现在我的POJO将依赖杰克逊的罐子。还有另一个简单的选择吗?
我试图从objectMapper.getSerializationConfig(). ...
中找出答案,但仍无法找到替换该注释的替代方法。
由于
答案 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 {}