将枚举反序列化为具有字符串属性的对象

Deserialize enum into object with string attribute

我目前正在尝试将枚举值从 json 反序列化为包含字符串的对象(枚举值应该在其中结束)。

示例: 域 class

public class Person {
private UUID personId;
private Occupation occupation;

}

职业class:

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() 值最终成为职业 class 的可用对象。现在它试图将值 STATE_EMPLOYEE 反序列化为 Occupation class 的对象,这显然是行不通的。

有没有办法让我return像这样的对象?我不想更改我的 Person 对象以保存 OccupationType 枚举,因为它还有很多其他内容。

我收到的错误是:

 Can not construct instance of person.package.Occupation: no String-argument constructor/factory method to deserialize from String value ('STATE_EMPLOYEE')

尝试将我的枚举值放入包含字符串的 Occupation 对象中基本上失败了。 (我想要我的东西在哪里)。 提前致谢!

我通过创建自己的自定义解串器解决了这个问题。