【问题标题】:Serializing & Unwrap the Map object in POJO using Jackson annotation使用 Jackson 注释在 POJO 中序列化和解包 Map 对象
【发布时间】:2015-07-01 11:31:15
【问题描述】:

我有一个 POJO,其属性名为 paramMap 作为 Map 类型。

import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.JsonUnwrapped;

@JsonTypeInfo(include=As.WRAPPER_OBJECT, use=Id.NAME)
public class Pojo {

    @JsonUnwrapped
    private Map<String, Object> paramMap = new HashMap<String, Object>();

    public Map<String, Object> getParamMap() {
        return paramMap;
    }

    public void setParamMap(Map<String, Object> paramMap) {
        this.paramMap = paramMap;
    }

考虑到我已经在地图中填充了一些值,现在我想序列化它并解开属性名称paramMap

预期输出:

{
    "Pojo": {
        "name": "value1",
        "age": 12,
        "date": "12/02/2015"
    }
}

实际输出

{
    "Pojo": {
        "paramMap": {
            "name": "value1",
            "age": 12,
            "date": "12/02/2015"
        }
    }
}

【问题讨论】:

    标签: java spring-mvc jackson


    【解决方案1】:

    答案是here,在getParamMap()的getter方法中使用Jackson注解@JsonAnyGetter可以得到预期的输出。

    @JsonAnyGetter
    public Map<String, Object> getParamMap() {
        return paramMap;
    }
    

    注意:这仍然在 Jackson 项目 Issue #171 中打开 感谢Tatu Saloranta帖子的作者

    【讨论】:

      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多