所有
任何人都可以看到我的方式错误吗?
我需要从JSON进行自定义反序列化,才能在Drop Wizard中使用。我跟着一些如何,但它没有工作。结果是我没有可用的,默认的,无法构造的。相反,我有一个工厂方法。我无法修改我试图反序列化的类。我可以序列化为JSON序列化&反序列化到XML和从XML反序列化。但是从JSON反序列化是止步器。
我已经阅读了我在SO和其他地方可以找到的所有内容,但没有任何规定可行。
我创建了一个mixin:
public class PatientMixin {
@JsonCreator
public static ForecastPatient createForecastForecastPatient() {
return ForecastFactory.eINSTANCE.createForecastPatient();
}
}
在我的DW Application.run(...)中,我这样做了:
<code before>
environment.getObjectMapper().addMixIn(ForecastPatient.class, PatientMixin.class);
<code after>
以上应该足以让杰克逊找到我的Mixin并致电工厂。相反,我收到了一个错误:
Can not construct instance of forecast.ForecastPatient, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information
我原本以为我把事情映射得恰当但显然没有。此外,我正在阅读的许多例子似乎都已过时。
提前致谢
答案 0 :(得分:0)
默认情况下,杰克逊尝试使用&#34;默认&#34;构造函数(一个 在创建值实例时,不带参数。但你也可以 选择使用另一个构造函数或静态工厂方法 创建实例。为此,您需要使用注释 @JsonCreator,可能还有@JsonProperty注释来绑定名称 参数
https://github.com/FasterXML/jackson-annotations#using-constructors-or-factory-methods
表示ForecastFactory.createForecastPatient()
应使用@JsonCreator