В настоящее время я пытаюсь десериализовать значение enum из json в объект, содержащий строку (где значение enum должно заканчиваться).
Пример:
Доменный класс
public class Person {
private UUID personId;
private Occupation occupation;
}
Класс занятий:
public class Occupation {
private String occupationType;
}
Код, который я использую:
PersonResponse personResponse = JsonConverter.fromJson(message.getPayload(), new TypeReference<Person>() {
});
И JSON:
{"personId":"719e622e-6e00-4e84-b748-739f95d7c0fa", "occupationType":"STATE_EMPLOYEE"
По сути, я хочу, чтобы мое значение STATE_EMPLOYEE.name () оказалось в пригодном для использования объекте класса Occupation. Сейчас он пытается десериализовать значение STATE_EMPLOYEE в объект класса Occupation, что, очевидно, не работает.
Есть ли способ вернуть мне объект, подобный этому? Я не хочу менять свой объект Person для хранения перечисления OccupationType, потому что он также содержит множество других вещей.
Я получаю ошибку:
Can not construct instance of person.package.Occupation: no String-argument constructor/factory method to deserialize from String value ('STATE_EMPLOYEE')
В основном не удается вставить мое значение enum в мой объект Occupation, содержащий строку. (Где я хочу, чтобы моя вещь была).
Заранее спасибо!