Aru*_*ash 5 java spring-mvc jackson
我有一个名为 paramMap 的属性作为 Map 类型的 POJO。
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;
}
Run Code Online (Sandbox Code Playgroud)
考虑我在地图中填充了一些值,现在我想序列化它并解开属性名称paramMap。
预期输出:
{
"Pojo": {
"name": "value1",
"age": 12,
"date": "12/02/2015"
}
}
Run Code Online (Sandbox Code Playgroud)
实际产量
{
"Pojo": {
"paramMap": {
"name": "value1",
"age": 12,
"date": "12/02/2015"
}
}
}
Run Code Online (Sandbox Code Playgroud)
答案就在这里,@JsonAnyGetter在getter方法中使用Jackson注解getParamMap()我们可以得到预期的输出。
@JsonAnyGetter
public Map<String, Object> getParamMap() {
return paramMap;
}
Run Code Online (Sandbox Code Playgroud)
注意:这在 Jackson 项目问题 #171 中仍然是开放的, 感谢Tatu Saloranta 这篇文章的作者
| 归档时间: |
|
| 查看次数: |
3265 次 |
| 最近记录: |