遇到一個問題,前端按照平常方式傳給我json對象,屬性名和我一致,我在controller層也按平常方式使用@RequestBody注解,用相應的實體類接收參數,但別人可以成功接到參數,而我的卻不能,在實體類的成員變量上增加@JsonProperty("屬性名"),就解決了問題
查了一下這個注解:
@JsonProperty 此注解用於屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name,@JsonProperty("name")。
import com.fasterxml.jackson.annotation.JsonProperty;
public class Student implements Serializable{
@JsonProperty("name")
private String trueName;
public String getTrueName() {
return trueName;
}
public void setTrueName(String trueName) {
this.trueName = trueName;
}
}
測試一下
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("張三");
//使用writeValuesAsString的方法就可以把對角轉化成json字符串。
System.out.println(new ObjectMapper().writeValueAsString(student));
}
}
得到結果
{"name":"張三"}
注意事項:類和父類必須都實現序列化后,才可以反序列化,類沒有實現序列化,也可以使用此注解序列化
感覺這個注解的作用是:1.前端傳參數過來的時候,使用這個注解,可以獲取到前端與注解中同名的屬性 2。后端處理好結果后,返回給前端的屬性名也不以實體類屬性名為准,而以注解中的屬性名為准
有個疑問,不知道可以不以把接收前端來的參數看作序列化,返回給前端的參數時,當作反序列化?