亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

@JsonProperty,@NotNull,@JsonIgnore怎么使用

發布時間:2022-08-30 11:42:44 來源:億速云 閱讀:189 作者:iii 欄目:開發技術

本篇內容介紹了“@JsonProperty,@NotNull,@JsonIgnore怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

場景分析一

小明做了一個web表單,用來填寫并保存數據,后臺寫restful接口接收數據并保存。

寫完之后讓老大review的時候,自信滿滿的小明,又收到了很多comment。

小明看到了這些comment發現確實有不足之處,比如表單里的有些數據是必須不為空的,雖然在頁面上加上了強校驗(Js校驗),但是后臺接口是對外開放的restful接口,別人不走頁面直接訪問接口存儲數據,這時候頁面的校驗就顯得很尷尬了,小明又想這好辦啊,直接拿接收到的參數進行非空判斷不就行了么,其實也是可以的,但是小明在研究@JsonProperty的時候發現@NotNull正好解決這個問題。

代碼展示如下:

Student類

public class Student {
   
   @JsonProperty(value="real_name")
   private String name ;
   
   @NotNull(message="idcard is not null")
   private String idCard;
   
   
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public String getIdCard() {
      return idCard;
   }
   public void setIdCard(String idCard) {
      this.idCard = idCard;
   }
   
   
}

StudentController.java

(注:這里為了測試方便未按照標準的restApi書寫,如需學習標準的restful接口風格請移步百度。請見諒)

@RestController
public class StudentController {
 
   @RequestMapping(value="/student",method=RequestMethod.POST)
   public Student save(@RequestBody @Valid Student student) {
      return student;
   }
}

Postman測試如下:

(條件是:正常輸入real_name和idCard,返回結果正常)

@JsonProperty,@NotNull,@JsonIgnore怎么使用

Postman測試結果如下

(條件:只寫real_name,不填寫idCard。報錯)

@JsonProperty,@NotNull,@JsonIgnore怎么使用

@JsonProperty,@NotNull,@JsonIgnore怎么使用

注意接口書寫時,用@RequestBody接收輸入參數時,這時候也需要匹配你預先定義的@JsonProperty的值。

參考real_name.并且,在參數前需要加上@Valid,你定義的@NotNull校驗才會生效。

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

場景分析二

idCard為用戶的敏感信息,在接口返回數據中不能展示出來,以免用戶敏感信息直接暴露在外。

這時候,小明想到了另外一個注解,@JsonIgnore,在Student對象序列化為json數據的返回的時候,忽略該屬性。

代碼及測試如下:

 @JsonProperty(value="real_name")
   private String name ;
   
   @JsonIgnore
   private String idCard;

Postman測試如下

(條件:正常輸入real_name和idCard,觀察返回數據,只包含real_name)

@JsonProperty,@NotNull,@JsonIgnore怎么使用

場景分析三

在場景二中提到使用@JsonIgnore可以讓接口在返回數據的時候不序列化一些屬性。

但是小明又想了,若場景一和場景二結合使用,及在用戶輸入表單保存數據的時候,某個字段不能為空,并且返回數據的時候又不能包含該屬性,是不是可以使用組合注解@JsonIngore和@NotNull呢,

代碼和測試結果如下:

 @JsonProperty(value="real_name")
   private String name ;
   
   @JsonIgnore
   @NotNull(message="idcard is not null")
   private String idCard;

Postman測試結果如下

(條件:idCard及為上述特殊字段,結果報錯)

@JsonProperty,@NotNull,@JsonIgnore怎么使用

@JsonProperty,@NotNull,@JsonIgnore怎么使用

經過嘗試,小明想到了如下解決方案,代碼及測試結果如下:

   @JsonProperty(value="real_name")
   private String name ;
   
   @JsonProperty(access=Access.WRITE_ONLY)
   @NotNull(message="idcard is not null")
   private String idCard;

Postman測試結果如下

(條件:用JsonProperty代替JsonIgnore)

@JsonProperty,@NotNull,@JsonIgnore怎么使用

成功實現需求。

場景分析四

由于小明公司秉承盡最大努力少使用第三方的資源的原因,項目中關于JsonObject相關的jar都是使用的org.json,并未使用阿里的fastjson,如果項目使用的是fastjson,再使用上述的注解就不起作用了,它有自己的一套注解來解決上述問題,

如:@JSONField,具體可參考com.alibaba.fastjson.annotation包。

“@JsonProperty,@NotNull,@JsonIgnore怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

公安县| 海南省| 鸡西市| 梅州市| 阳西县| 五台县| 清水县| 郧西县| 固原市| 武穴市| 山丹县| 房产| 孝感市| 大埔区| 电白县| 久治县| 长岭县| 巴青县| 迁西县| 潞城市| 修水县| 高安市| 无为县| 宜黄县| 读书| 喀喇沁旗| 肇源县| 杭锦后旗| 台北县| 遵义县| 五原县| 杭锦旗| 岗巴县| 新建县| 昌吉市| 梓潼县| 舟山市| 客服| 景德镇市| 开鲁县| 德安县|