Jackson 可以仅通过注释反序列化为 Map<Long, String> 吗?

use*_*121 5 java json dictionary jackson json-deserialization

我有一个包含地图属性的 json 字符串,例如

{"map":{"1":"value"}, ...}
Run Code Online (Sandbox Code Playgroud)

当 Jackson 将其反序列化为包含 an 属性的类时Map<Long, String> map,它似乎执行了 a 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

Cli*_*ood 0

尝试这个:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)