0
点赞
收藏
分享

微信扫一扫

【Jackson】@JsonAnyGetter 和 @JsonAnySetter


@JsonAnySetter

可以将序列化时未识别到的属性都扔进一个map里。

@JsonAnyGetter

将map里的属性都平铺输出。

model类:

public class JsonModel1 {

private long id;
private String name;
private Map<String, Object> map;

public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

@JsonAnySetter
public void addExtra(String key, Object value) {
if (map == null) {
map = new HashMap<>();
}
map.put(key, value);
}

@JsonAnyGetter
public Map<String, Object> getMap() {
return map;
}

test:

@Test
public void testDS1() throws IOException {
String json1 = "{\"name\":\"ly\",\"id\":1,\"address\":\"yuanping\"}";
JsonModel1 m2 = mapper.readValue(json1, JsonModel1.class);
System.out.println(m2.getMap());

String json = mapper.writeValueAsString(m2);
System.out.println(json);
}

输出:
{address=yuanping}
{"id":1,"name":"ly","address":"yuanping"}

可以看到,反序列化时未识别到的属性address被塞进了map属性了,另外在反序列时,也可以输出到model类其他属性的平级位置。

举报

相关推荐

0 条评论