我有一个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"
}
}
}
最佳答案
答案是here,在@JsonAnyGetter
的getter方法中使用Jackson批注getParamMap()
,我们可以得出预期的结果。
@JsonAnyGetter
public Map<String, Object> getParamMap() {
return paramMap;
}
注意:这在Jackson项目Issue #171中仍处于打开状态
谢谢 Tatu Saloranta 的作者