@JsonProperty和@JsonAlias的區別

滄海一滴發表於2019-02-27

@JsonProperty
這個註解提供了序列化和反序列化過程中該java屬性所對應的名稱
@JsonAlias
這個註解只只在反序列化時起作用,指定該java屬性可以接受的更多名稱

   public static void main (String[] args ) throws IOException {
        String a ="{\"NaMe\":\"hello\"}";
        ObjectMapper objectMapper = new ObjectMapper();
        Label label = objectMapper.readValue(a, Label.class);
        String labelString = objectMapper.writeValueAsString(label);
        System.out.println(labelString);
    }

    public static class Label{
        //反序列化時兩個都可用,都沒有會報錯
        //@JsonAlias("NaMe")
        @JsonProperty("NaMe")
        public String name;
        public Label(){
        }
    }

使用@JsonProperty時,序列化結果為:{“NaMe”:“hello”}
使用@JsonAlias時,序列化結果為:{“name”:“hello”}

參考:https://www.concretepage.com/jackson-api/jackson-jsonproperty-and-jsonalias-example.