我有一个动态字段,其中键是未知的,值可以是String或Object。
此外,字段本身可以是地图或只是单个值。
我如何指示Jackson根据它的值类型序列化/反序列化该字段?
我还想保存我的类型对象以在我的代码中使用,而不只是使用Map<String, Object>
的地图。
public class MyPackage {
@JsonProperty("versions")
public Versions versions = new Versions();
@JsonAnySetter
public void add(String key, MyVersionObject value) {
versions.put(key, value);
}
@JsonAnyGetter
public Map<String, MyVersionObject> getMap() {
return versions;
}
}
此字段应接受的不同JSON:
{
"versions": {
"1.0": { ... MyVersionObject fields},
"2.0": { ... MyVersionObject fields},
"3.0": { ... MyVersionObject fields},
}
}
或者
{
"versions": {
"3.0": "latest"
}
}
答案 0 :(得分:1)
听起来像输入是如此不规则,你无法动态地定义它。因此,请将值类型保留为Object
;这会给你String
或Map
。从那以后,改变自己;手动或使用ObjectMapper.convertValue()
方法。