https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等; 系列文章汇总本篇概览
源码下载
JsonValue
static class Test { private String field0; private String field1; @JsonValue public String getField0() { return "abc"; } public void setField0(String field0) { this.field0 = field0; } public String getField1() { return field1; } public void setField1(String field1) { this.field1 = field1; } }
JsonCreator
static class Test { private String field0; private String field1; public Test(String field0) { this.field0 = field0; } // 通过JsonCreator指定反序列化的时候使用这个构造方法 // 通过JsonProperty指定字段关系 @JsonCreator public Test(@JsonProperty("field0") String field0, @JsonProperty("field1") String field1) { this.field0 = field0; this.field1 = field1; } @Override public String toString() { return "Test{" + "field0='" + field0 + '\'' + ", field1='" + field1 + '\'' + '}'; } }
JsonSetter
JsonGetter
JsonAnyGetter
package com.bolingcavalry.jacksondemo.annotation.methodannotation; import com.fasterxml.jackson.annotation.JsonAnyGetter; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import java.util.HashMap; import java.util.Map; public class JsonAnySetterSerialization { static class Test { private String field0; private Map<String, Object> map; public String getField0() { return field0; } public void setField0(String field0) { this.field0 = field0; } public void setMap(Map<String, Object> map) { this.map = map; } public Map<String, Object> getMap() { return map; } } public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); // 美化输出 mapper.enable(SerializationFeature.INDENT_OUTPUT); // 新增一个HashMap,里面放入两个元素 Map<String, Object> map = new HashMap<>(); map.put("aaa", "value_aaa"); map.put("bbb", "value_bbb"); Test test = new Test(); test.setField0("000"); // map赋值给test.map test.setMap(map); System.out.println(mapper.writeValueAsString(test)); } }
{ "field0" : "000", "map" : { "aaa" : "value_aaa", "bbb" : "value_bbb" } }
{ "field0" : "000", "aaa" : "value_aaa", "bbb" : "value_bbb" }
JsonAnySetter
package com.bolingcavalry.jacksondemo.annotation.methodannotation; import com.fasterxml.jackson.annotation.JsonAnySetter; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.HashMap; import java.util.Map; public class JsonAnySetterDeserialization { static class Test { private String field0; private Map<String, Object> map = new HashMap<>(); @JsonAnySetter public void setValue(String key, Object value) { map.put(key, value); } @Override public String toString() { return "Test{" + "field0='" + field0 + '\'' + ", map=" + map + '}'; } } public static void main(String[] args) throws Exception { String jsonStr = "{\n" + " \"field0\" : \"000\",\n" + " \"aaa\" : \"value_aaa\",\n" + " \"bbb\" : \"value_bbb\"\n" + "}"; System.out.println(new ObjectMapper().readValue(jsonStr, Test.class)); } }
Test{field0='null', map={aaa=value_aaa, field0=000, bbb=value_bbb}}
static class Test { private String field0; @JsonAnySetter private Map<String, Object> map = new HashMap<>(); @Override public String toString() { return "Test{" + "field0='" + field0 + '\'' + ", map=" + map + '}'; } }
你不孤单,欣宸原创一路相伴 |
|