У меня есть следующие Json
{
"coreId" : "1",
"name" : "name",
"additionalValueList" : [
{
"columnName" : "allow_duplicate",
"rowId" : "10",
"value" : "1"
},
{
"columnName" : "include_in_display",
"rowId" : "11",
"value" : "0"
},
...e.t.c
]
},
...e.t.c
и Java class
class DTO {
@JsonProperty("coreId")
private Integer id;
private String name;
private Boolean allowDuplicate;
private Boolean includeInDisplay;
}
Как я могу легко отобразить значения из 'AdditionalValueList' в соответствующие поля java. Например, Json значение из поля 'columnName' - 'allow_duplicate' = DTO.allowDuplicate. На самом деле я знаю, как это сделать с помощью пользовательских десериализаторов с аннотацией @JsonDeserialize и чем-то подобным. Но у меня 40+ DTO, и не очень хорошая идея создавать собственный десериализатор для каждого поля. Я ищу решение иметь, например, 1 десериализатор (поскольку структура значений в 'AdditionalValueList' одинакова для всех сущностей) и передать параметр (имя поля, которое я хочу сопоставить с этим полем) в пользовательский десериализатор, который найдет в ' AdditionalValueList 'сущность с' столбцом Name '= параметром (который я передал из аннотации) и возвращающим' value '. Пример
class DTO {
@JsonProperty("coreId")
private Integer id;
private String name;
@JsonDeserialize(using = MyCustDeser.class,param = allow_duplicate)
private Boolean allowDuplicate;
@JsonDeserialize(using = MyCustDeser.class,param = include_in_display)
private Boolean includeInDisplay;
}
Это будет хорошим решением, но, возможно, его будет нелегко достичь. Однако я буду очень благодарен за все ваши советы. Спасибо.