将枚举反序列化为具有字符串属性的对象
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 对象中基本上失败了。 (我想要我的东西在哪里)。
提前致谢!
我通过创建自己的自定义解串器解决了这个问题。
我目前正在尝试将枚举值从 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 对象中基本上失败了。 (我想要我的东西在哪里)。 提前致谢!
我通过创建自己的自定义解串器解决了这个问题。