Java Jackson Mixin无法反序列化非默认构造函数对象
我正在编写一个mixin,将字符串反序列化为javax.servlet.http.CookieJava Jackson Mixin无法反序列化非默认构造函数对象,java,jackson,deserialization,mixins,Java,Jackson,Deserialization,Mixins,我正在编写一个mixin,将字符串反序列化为javax.servlet.http.Cookie Mixin.java package a; import org.codehaus.jackson.annotate.JsonProperty; public abstract class MixIn { MixIn(@JsonProperty("name") String name, @JsonProperty("value") String value) { } } package
Mixin.java
package a;
import org.codehaus.jackson.annotate.JsonProperty;
public abstract class MixIn {
MixIn(@JsonProperty("name") String name, @JsonProperty("value") String value) { }
}
package b;
import a.MixIn;
ObjectMapper mapper = new ObjectMapper();
mapper.getDeserializationConfig().addMixInAnnotations(Cookie.class, MixIn.class);
Cookie aCookie = mapper.readValue("{"name":"abc","value":"xyz"}", Cookie.class);
它似乎提供了“JsonMappingException:没有为类型[simple type,class javax.servlet.http.Cookie]找到合适的构造函数”错误
请注意
-Mixin(必须)定义为一个单独的类(不是内部类,不是静态的)
-Mixin及其使用的类(必须)在两个不同的包中
我使用的是jackson 1.9.9,你不需要在mixin构造函数中包含@JsonCreator吗?我自己也在为类似的问题挣扎,所以我不是100%确定 我的问题:
更新:我在上面问题中的例子是有效的,你对mixin的评论需要在一个单独的包中,而不是在一个内部类中,谢谢 为Mixin创建单独的类
public abstract class MixinClass extends OriginalClass {
//`datamember` is the datamember required to create instance of OriginalClass
@JsonCreator
MixinClass(@JsonProperty("item") datamember item) { super(item); }
}
在mapper类中添加以下内容:
objectMapper.addMixInAnnotations(OriginalClass.class, MixinClass.class);
这将解决问题。确保MixinClass是一个单独的.java文件,而不是一个内部类。我仍然无法复制。以下是我的代码链接:标记为最近一个问题的副本。这两个问题的答案都在这个问题上。我正在做这件事,但它不起作用。为我工作,谢谢。mixin可以在同一个文件中,只要它是静态的