我有一个包含地图属性的json字符串,例如
{"map":{"1":"value"}, ...}
当Jackson将其反序列化为包含属性
Map<Long, String> map
的类时,似乎在执行map.put(null,"1=value")
。在进行序列化时,它将序列化对象为相同的格式。有没有一种方法可以让杰克逊正确地反序列化为仅带有注释的Map,否则我需要制作一个自定义序列化程序。
带有getter / setter的示例对象:
@JsonTypeInfo(use = JsonTypeInfo.Id.MINIMAL_CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class")
public class exampleObject {
Map<Long, String> valueMap;
public Map<Long, String> getValueMap() {
return valueMap;
}
public void setValueMap(Map<Long, String> valueMap) {
this.valueMap = valueMap;
}
}
最佳答案
试试这个:
public class ExampleObject {
private Map<String, Long> valueMap;
@JsonCreator
public AccountTagVariableDescription(Map<String, Long> valueMap) {
this.valueMap = valueMap;
}
@JsonAnyGetter
public Map<String, Long> getValueMap() {
return valueMap;
}
}