Jackson可以用注释反序列化为Map <long,string =“”>吗?</long,>

时间:2014-12-23 20:50:32

标签: java json dictionary jackson json-deserialization

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

{"map":{"1":"value"}, ...}

当Jackson将其反序列化为包含属性Map<Long, String> map的类时,它似乎会执行map.put(null,"1=value")。在序列化时,它会将对象序列化为相同的格式。

有没有办法让jackson正确地反序列化为只带注释的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;
  }
}

1 个答案:

答案 0 :(得分: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;
    }
}