| https://github.com/zq2599/blog_demos 內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及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指定反序列化的時候使用這個構(gòu)造方法
        // 通過JsonProperty指定字段關(guān)系
        @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 +
                    '}';
        }
    }
 
 你不孤單,欣宸原創(chuàng)一路相伴 | 
|  |