java - 将枚举反序列化为具有字符串属性的对象
问题描述
我目前正在尝试将枚举值从 json 反序列化为包含字符串的对象(枚举值应该结束的位置)。
示例:域类
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')
它基本上无法尝试将我的枚举值放入包含字符串的我的 Occupation 对象中。(我希望我的东西在哪里)。提前致谢!
解决方案
我通过创建自己的自定义反序列化器解决了这个问题。