Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jackson将包括';类别';将对象序列化为json时的字段_Json_Jackson - Fatal编程技术网

Jackson将包括';类别';将对象序列化为json时的字段

Jackson将包括';类别';将对象序列化为json时的字段,json,jackson,Json,Jackson,我需要我的Grails应用程序与使用Jackson的客户端进行通信(JSON)。默认情况下,Grails在生成的json中包含“class”。另一方面,默认Jackson的ObjectMapper无法识别“类”,它会抛出错误 我找到了解决方案,在每个正在使用的POJO类上添加@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS,include=JsonTypeInfo.As.PROPERTY,PROPERTY=“CLASS”) 但是,我不喜欢这种方法。因为现在我的POJ

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

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

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

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


谢谢

您是使用类型信息进行多态实例化还是忽略该信息?您可能可以在类上使用
@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 {}

我无法控制这些类,因此此AddMixinNotations将非常有用。谢谢