2

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

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

但是,我不喜欢这种方法。因为现在我的 POJO 将依赖于杰克逊的 jar。还有其他简单的选择吗?

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

谢谢

4

1 回答 1

2

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

如果你真的不想给你的类添加注解,你可以使用 mix-in 机制。尽管将注释直接添加到您的类中要容易得多,但如果您当然控制类。

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 {}
于 2013-04-02T14:27:58.887 回答