Десериализовать перечисление в объект со строковым атрибутом - PullRequest
0 голосов
/ 03 сентября 2018

В настоящее время я пытаюсь десериализовать значение 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, содержащий строку. (Где я хочу, чтобы моя вещь была). Заранее спасибо!

1 Ответ

0 голосов
/ 06 сентября 2018

Я решил это, создав свой собственный десериализатор.

...