Сопоставление и изменение данных через рефлексию

Есть класс User

public class User() {
private String name;
private int age;
private long passportNumber;
private ZonedDateTime workStartTime;
// здесь будут сеттеры и геттеры
}

Есть json

{"name": Alex, "age": 35, "passportNumber": 7745795431, "offset":1}

Использую Jackson для десериализации данных из json и Lombok для работы с pojo-классом.

ObjectMapper objectMapper = new ObjectMapper();
PojoClass pojo = objectMapper.readValue(file, PojoClass.class);

Далее происходит итерация по полям pojo и установление в нужные поля класса User.

Field[] field = PojoClass.class.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(pojo);
if (field.toString().contains("passportNumber")) {
User.getDocument().setPassportNumber((int) value));
}
if (field.toString().contains("offset")) {
user.setWorkStartTime(now().plusHour((int) value));
}

Есть ли какая-нибудь библиотека, которая позволит не писать множество if-ов, а сопоставит поля из pojo и User сама?))Вариант с десериализацией json сразу в User вряд-ли подойдет, потому что полей в user много, и менять их нужно на разных уровнях агрегации(как в случае с passportNumber).

Код на java8


Ответы (0 шт):