1. 程式人生 > >@JsonProperty序列化和反序列化使用 @JsonProperty("this_name") private String thisName;

@JsonProperty序列化和反序列化使用 @JsonProperty("this_name") private String thisName;


 被註解標識後,controller返回序列化引數後變為this_name,當接受application/json編碼格式的引數時,
同樣需要接收引數為this_name的引數.但是當用表單提交時,則必須傳thisName或ThisName才能接收


這裡需要注意的是將物件轉換成json字串使用的方法是fasterxml.jackson提供的!!
@JsonProperty不僅僅是在序列化的時候有用,反序列化的時候也有用,比如有些介面返回的是json字串,命名又不是標準的駝峰形式,在對映成物件的時候,將類的屬性上加上@JsonProperty註解,裡面寫上返回的json串對應的名字





jackson的maven依賴

[html] view plain copy
<dependency>  
    <groupId>com.fasterxml.jackson.core</groupId>  
    <artifactId>jackson-databind</artifactId>  
    <version>2.5.3</version>  
</dependency>  
@JsonProperty 此註解用於屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name,@JsonProperty("name")。
[java] view plain copy
import com.fasterxml.jackson.annotation.JsonProperty;  
  
public class Student {  
  
    @JsonProperty("name")  
    private String trueName;  
  
    public String getTrueName() {  
        return trueName;  
    }  
  
    public void setTrueName(String trueName) {  
        this.trueName = trueName;  
    }  
}  
測試一下
[java] view plain copy
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.setTrueName("張三");  
        System.out.println(new ObjectMapper().writeValueAsString(student));  
    }  
}  
得到結果
[html] view plain copy
{"name":"張三"}  


@JsonProperty("this_name")
private String thisName;