@JsonProperty

jackson的maven依賴

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
</dependency>

所以引入這一個依賴就可以了

@JsonProperty 此註解用於屬性上,作用是把該屬性的名稱序列化爲另外一個名稱,如把trueName屬性序列化爲name,@JsonProperty(value="name")。

複製代碼
import com.fasterxml.jackson.annotation.JsonProperty;

public class Student {

    @JsonProperty(value = "real_name")
    private String realName;

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    @Override
    public String toString() {
        return "Student{" +
                "realName='" + realName + '\'' +
                '}';
    }
}
複製代碼

測試

複製代碼
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {
    public static void main(String[] args) throws JsonProcessingException {
        Student student = new Student();
        student.setRealName("zhangsan");
        System.out.println(new ObjectMapper().writeValueAsString(student));
    }
}
複製代碼

結果

{"real_name":"zhangsan"}

這裏需要注意的是將對象轉換成json字符串使用的方法是fasterxml.jackson提供的!!

如果使用fastjson呢?

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.28</version>
</dependency>
複製代碼
import com.alibaba.fastjson.JSON;

public class Main {
    public static void main(String[] args) {
        Student student = new Student();
        student.setRealName("zhangsan");
        System.out.println(JSON.toJSONString(student));
    }
}
複製代碼

結果

{"realName":"zhangsan"}

可以看到,@JsonProperty(value = "real_name")沒有生效,爲啥?

因爲fastjson不認識@JsonProperty註解呀!所以要使用jackson自己的序列化工具方法!

 --------------------------

@JsonProperty不僅僅是在序列化的時候有用,反序列化的時候也有用,比如有些接口返回的是json字符串,命名又不是標準的駝峯形式,在映射成對象的時候,將類的屬性上加上@JsonProperty註解,裏面寫上返回的json串對應的名字
複製代碼
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        String jsonStr = "{\"real_name\":\"zhangsan\"}";
        Student student = new ObjectMapper().readValue(jsonStr.getBytes(), Student.class);
        System.out.println(student);
    }
}
複製代碼

結果:

Student{realName='zhangsan'}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章