json如下所示:
{
"name": "john",
"options": {
"test": 1,
"operation": "op1", // I need to deserialize this option to enum.
...
// any number of options
}
}
我的课看起来是这样的:
public class Info {
public String name;
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
public Map<String, Object> options;
}
public enum OperationEnum {OP1, OP2, OP3}
如何反序列化到 options
Map operation
就像 enum
以及 test
至 Integer
4条答案
按热度按时间xienkqul1#
为什么不这样做:
那就行了!
im9ewurl2#
简单的解决方法是 Package
Map
示例,并为每个非正则属性实现额外的方法。你可以用@JsonAnySetter
用于存储所有key-value
对。参见以下示例:
以上代码打印:
11dmarpk3#
json结构,其中所有选项(不同类型)的存储方式如下
Map<String, Object> options;
强制额外的解析,因为值类型是基于标签标识的(如"operation"
以及OperationEnum
类)这里有两种方法ObjectMapper.readValue
以及Enum.valueOf
如果可能的话,考虑像@matthew那样更灵活的解决方案e5njpo684#
你应该可以使用
@JsonAnySetter
为了帮助您:这里有一篇很好的文章:https://www.concretepage.com/jackson-api/jackson-jsonanygetter-and-jsonanysetter-example