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
}
参照してください: