最近在項目使用json字符串轉javaBean 在轉換過程當中發現json轉到JavaBean的時候屬性名稱不一至。例如json字符串爲:java
{
"code": "1",
"message": "操做成功"
}
複製代碼
後端javaBean爲:json
@Data
public class Result implements Serializable {
private String aaa;
private String bbb;
}
複製代碼
引用 jackson-annotations maven依賴 裏面有@JsonProperty 和 @JsonAlias 能夠實現這個問題,可是這裏註解有什麼區別呢?後端
@JsonProperty 這個註解提供了序列化和反序列化過程當中該java屬性所對應的名稱,什麼意思呢?簡單的來講就是json字符串轉javaBean或者javaBean轉json字符串時會將屬性映射爲@JsonProperty設置的value ,例如:maven
@Data
public class Result implements Serializable {
@JsonProperty("code")
private String aaa;
@JsonProperty("message")
private String bbb;
}
複製代碼
反序列化結果:spa
{
"code": "1",
"message": "操做成功"
}
複製代碼
咱們發現一個問題,返回的json並非code
{
"aaa"1",
"bbb": "操做成功"
}
複製代碼
若是咱們想要實現上面的結果,那麼就要用到@JsonAlias了。字符串
@JsonAlias 這個註解只只在反序列化時起做用,指定該java屬性能夠接受的更多名稱,什麼意思呢?簡單來講就是json字符串轉javaBean的時候會生效,例如:string
@Data
public class Result implements Serializable {
@JsonAlias("code")
private String aaa;
@JsonAlias("message")
private String bbb;
}
複製代碼
反序列化結果:it
{
"aaa": "1",
"bbb": "操做成功"
}
複製代碼
達到了咱們想要的結果。io
總結:以上就是本次在項目中遇到的問題,若有那塊有問題或者想要補充的,歡迎指出,謝謝。