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

时间:2018-09-03 11:47:58

标签: java json json-deserialization

我当前正在尝试将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对象中。 (我想要我的东西在哪里)。 预先感谢!

1 个答案:

答案 0 :(得分:0)

我通过创建自己的自定义反序列化程序解决了该问题。