どのように私は、必須フィールドを知っていたJavaクラスにJSONをデシリアライズすることができますが、いくつかの未知のフィールドを持つことができますか?

LordSerius:

私は何を私必ず内部フィールドを持つ入力JSONを持っています。しかし、私はいくつかの余分なフィールドを追加するための柔軟性を必要としています。私は、余分なフィールドの名前を知らないが、私はそれを処理する必要があります。

私は、余分なフィールドのすべてを含むマップフィールドを追加することを考えていたが、入力は、このフィールドにマップされません。

私はDropwizardエンドポイントにJSONをデシリアライズしたいです。

ジャクソンに行う方法はありますか?

例:

JSONペイロード1:

{
  "first_name": "John",
  "last_name": "Doe",
  "date_of_birth": "01/01/1990",
  "postcode": "1234"
}

JSONペイロード2:

{
  "first_name": "Alice",
  "last_name": "Havee",
  "phone_no": 012345678,
  "passport_no": "AB 123456"
}

その後、JSONペイロード3上にも異なるフィールドを持つことができます。

JavaのDTO:

public class PersonDTO {

    // mandatory field
    private String firstName;

    // mandatory field
    private String lastName;

    // Unknown optional fields?

    // No args constructor
    // Getters
    // Setters
}
マイケルZiober:

あなたは使用することができJsonAnySetter、注釈を。

class PersonDTO {

    @JsonProperty("first_name")
    private String firstName;

    @JsonProperty("last_name")
    private String lastName;

    private Map<String, String> extras = new HashMap<>();

    @JsonAnySetter
    public void setExtras(String name, String value) {
        this.extras.put(name, value);
    }

    // No args constructor
    // Getters
    // Setters
}

参照してください:

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=229771&siteId=1