2016-10-19 4 views
0

すべて、FasterXMLJacksonに@JsonCreator mixinを使用させるにはどうすればよいですか?

誰も私の方法のエラーを見ることができますか?

JSONのカスタムデシリアライズが必要です。ドロップウィザードで作業する必要があります。私はいくつかのトスに従ったが、うまくいかない。結論は、私は利用可能ではありません、既定の、引数なしのコンストラクタです。代わりに、私はファクトリメソッドを持っています。逆直列化しようとしているクラスを変更することはできません。私はJSONをシリアライズすることができます&はXMLとの間で逆シリアル化します。しかし、JSONから非直列化がストッパーです。

私はSOなどで見つけることができるすべてを読みましたが、何も規定されていません。私はこれやった私のDW Application.run(...)では

public class PatientMixin { 

    @JsonCreator 
    public static ForecastPatient createForecastForecastPatient() { 
     return ForecastFactory.eINSTANCE.createForecastPatient(); 
    } 
} 

::私はミックスインを作成し

ジャクソンは私のミックスインを探して上記

<code before>   
environment.getObjectMapper().addMixIn(ForecastPatient.class, PatientMixin.class); 
<code after> 

は十分なはずですし、工場に電話してください。代わりにエラーが表示されます。

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

で注釈を付けなければならないことを意味するが、抽象クラスをforecast.ForecastPatientていますか? –

+0

いいえ抽象的ではありませんが、ファクトリメソッドが実装を返すインターフェイスです。 ForecastPatient et.al. eclipseモデリングフレームワークによって生成されました。 –

+0

ジャクソンはインスタンス化する実装をjacksonに伝えるべきではありません –

答えて

0

By default, Jackson tries to use the "default" constructor (one that takes no arguments), when creating value instances. But you can also choose to use another constructor, or a static factory method to create instance. To do this, you will need to use annotation @JsonCreator, and possibly @JsonProperty annotations to bind names to arguments

https://github.com/FasterXML/jackson-annotations#using-constructors-or-factory-methods

ForecastFactory.createForecastPatient()が@JsonCreator

+0

ForecastFactoryをこれに変更することを意味する場合は、 –

+0

fとすると、ForecastFactoryをこれに変更することを意味します:@JsonCreator public ForecastPatient createForecastPatient()。 ForecastFactoryは生成されたコードなので、何もできません。そこに擦れがあります。 –

+0

私はミックスインが正しいと思うし、問題はジャクソンがそれを見つけることにあると思う。面白いことに、私はこの作品を一度作ったことを思い出します。 –

関連する問題