Sur*_*aju 41 java json jackson
我的bean看起来像这样:
class MyBean {
private @JsonUnwrapped HashMap<String, String> map = new HashMap<String, String>();
private String name;
public HashMap<String, String> getMap() {
return map;
}
public void setMap(HashMap<String, String> map) {
this.map = map;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用以下代码序列化bean时:
MyBean bean = new MyBean();
HashMap<String, String> map = new HashMap<String, String>();;
map.put("key1", "value1");
map.put("key2", "value2");
bean.setMap(map);
bean.setName("suren");
ObjectMapper mapper = new ObjectMapper();
System.out.println("\n"+mapper.writeValueAsString(bean));
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下:
{"map":{"key2":"value2","key1":"value1"},"name":"suren"}
Run Code Online (Sandbox Code Playgroud)
但
{"key2":"value2","key1":"value1","name":"suren"}
Run Code Online (Sandbox Code Playgroud)
根据JacksonFeatureUnwrapping文档预计.为什么我没有得到解开的结果?
Har*_*non 85
@JsonUnwrapped
不适用于地图,仅适用于具有getter和setter的正确POJO.对于地图,您应该使用@JsonAnyGetter
和@JsonAnySetter
(在jackson版本中可用> = 1.6).
在你的情况下,试试这个:
@JsonAnySetter
public void add(String key, String value) {
map.put(key, value);
}
@JsonAnyGetter
public Map<String,String> getMap() {
return map;
}
Run Code Online (Sandbox Code Playgroud)
这样,您还可以直接向地图添加属性,就像add('abc','xyz')
将新abc
值添加到地图中一样xyz
.
归档时间: |
|
查看次数: |
11704 次 |
最近记录: |