は、私は以下のクラスがあるとしましょう:@JsonUnwrappedに相当するJacksonの逆シリアル化は何ですか?
public class Parent {
public int age;
@JsonUnwrapped
public Name name;
}
生産JSON:
{
"age" : 18,
"first" : "Joey",
"last" : "Sixpack"
}
私は親クラスにこのバックをデシリアライズするにはどうすればよいですか?私は@JsonCreator
@JsonCreator
public Parent(Map<String,String> jsonMap) {
age = jsonMap.get("age");
name = new Name(jsonMap.get("first"), jsonMap.get("last"));
}
を使用することができます。しかし、すべてのプロパティがここにマップとしても効果的に、親クラスに@JsonIgnoreProperties(ignoreUnknown=true)
を追加します。したがって、未知のJSONフィールドで例外をスローする必要がある場合は、それを自分で行う必要があります。さらに、マップ値がStrings以外のものである可能性がある場合は、手動の型チェックと変換を行う必要があります。ジャクソンがこのケースを自動的に処理する方法はありますか?
編集: 私は夢中になるかもしれませんが、これは実際には、明示的に文書に述べられていないされないにも関わらず動作するように表示されます。http://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/JsonUnwrapped.html
私はそれが以前に私のために動作しませんでしたかなり確信していました。それでも、未処理の多態型を逆シリアル化するためにカスタムロジックが必要な場合には、提案されている@JsonCreatorアプローチが望ましいかもしれません。
'@JsonUnwrapped'がデシリアライズのために動いていますか?私はそれを試したところ、フラット化されたJSONを逆シリアル化しようとすると「JSONを読み取れませんでした:認識できないフィールド...」というエラーが発生しました。 –