首页 > 解决方案 > 将枚举反序列化为具有字符串属性的对象

问题描述

我目前正在尝试将枚举值从 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 对象中。(我希望我的东西在哪里)。提前致谢!

标签: javajsonjson-deserialization

解决方案


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


推荐阅读