我有一个包含地图属性的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;
    }
}

09-27 15:31