最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于@JsonProperty,@NotNull,@JsonIgnore的具體使用

 更新時(shí)間:2022年08月30日 09:45:04   作者:peng-peng-  
這篇文章主要介紹了關(guān)于@JsonProperty,@NotNull,@JsonIgnore的具體使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前情摘要

上回說道,小明同學(xué)用@JsonProperty解決了,在接口通訊中的Json反序列化問題。

經(jīng)過研究,小明發(fā)現(xiàn)@JsonProperty在特定場(chǎng)景下,還有更人性化的作用。

并且在項(xiàng)目中相繼使用了@JsonIgnore和@NotNull兩兄弟。下面繼續(xù)場(chǎng)景分析。

場(chǎng)景分析一

小明做了一個(gè)web表單,用來填寫并保存數(shù)據(jù),后臺(tái)寫restful接口接收數(shù)據(jù)并保存。

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

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

代碼展示如下:

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

(注:這里為了測(cè)試方便未按照標(biāo)準(zhǔn)的restApi書寫,如需學(xué)習(xí)標(biāo)準(zhǔn)的restful接口風(fēng)格請(qǐng)移步百度。請(qǐng)見諒)

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

Postman測(cè)試如下:

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

Postman測(cè)試結(jié)果如下

(條件:只寫real_name,不填寫idCard。報(bào)錯(cuò))

注意接口書寫時(shí),用@RequestBody接收輸入?yún)?shù)時(shí),這時(shí)候也需要匹配你預(yù)先定義的@JsonProperty的值。

參考real_name.并且,在參數(shù)前需要加上@Valid,你定義的@NotNull校驗(yàn)才會(huì)生效。

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

場(chǎng)景分析二

idCard為用戶的敏感信息,在接口返回?cái)?shù)據(jù)中不能展示出來,以免用戶敏感信息直接暴露在外。

這時(shí)候,小明想到了另外一個(gè)注解,@JsonIgnore,在Student對(duì)象序列化為json數(shù)據(jù)的返回的時(shí)候,忽略該屬性。

代碼及測(cè)試如下:

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

 

Postman測(cè)試如下

(條件:正常輸入real_name和idCard,觀察返回?cái)?shù)據(jù),只包含real_name)

場(chǎng)景分析三

在場(chǎng)景二中提到使用@JsonIgnore可以讓接口在返回?cái)?shù)據(jù)的時(shí)候不序列化一些屬性。

但是小明又想了,若場(chǎng)景一和場(chǎng)景二結(jié)合使用,及在用戶輸入表單保存數(shù)據(jù)的時(shí)候,某個(gè)字段不能為空,并且返回?cái)?shù)據(jù)的時(shí)候又不能包含該屬性,是不是可以使用組合注解@JsonIngore和@NotNull呢,

代碼和測(cè)試結(jié)果如下:

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

Postman測(cè)試結(jié)果如下

(條件:idCard及為上述特殊字段,結(jié)果報(bào)錯(cuò))

經(jīng)過嘗試,小明想到了如下解決方案,代碼及測(cè)試結(jié)果如下:

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

Postman測(cè)試結(jié)果如下

(條件:用JsonProperty代替JsonIgnore)

成功實(shí)現(xiàn)需求。

場(chǎng)景分析四

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

如:@JSONField,具體可參考com.alibaba.fastjson.annotation包。感興趣的可以查一下。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式

    Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式

    這篇文章主要介紹了Mybatis-Plus條件構(gòu)造器select方法返回指定字段方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • eclipse 中的javac命令與java命令

    eclipse 中的javac命令與java命令

    這篇文章主要介紹了eclipse javac命令與java命令的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Java在PDF中添加表格過程詳解

    Java在PDF中添加表格過程詳解

    這篇文章主要介紹了Java在PDF中添加表格過程詳解,本文將介紹通過Java編程在PDF文檔中添加表格的方法。添加表格時(shí),可設(shè)置表格邊框、單元格對(duì)齊方式、單元格背景色、單元格合并、插入圖片、設(shè)置行高、列寬、字體、字號(hào)等,需要的朋友可以參考下
    2019-07-07
  • Java數(shù)學(xué)工具類MathUtil詳解

    Java數(shù)學(xué)工具類MathUtil詳解

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)學(xué)工具類MathUtil的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Spring?Boot?ORM?框架JPA使用與連接池?Hikari詳解

    Spring?Boot?ORM?框架JPA使用與連接池?Hikari詳解

    這篇文章主要介紹了SpringBoot?ORM框架JPA與連接池Hikari,主要就是介紹JPA?的使用姿勢(shì),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Java如何生成隨機(jī)數(shù)不了解下嗎

    Java如何生成隨機(jī)數(shù)不了解下嗎

    我們?cè)趯W(xué)習(xí) Java 基礎(chǔ)時(shí)就知道可以生成隨機(jī)數(shù),可以為我們枯燥的學(xué)習(xí)增加那么一丟丟的樂趣,本文就來和大家介紹Java生成隨機(jī)數(shù)的常用方法,需要的可以參考下
    2023-08-08
  • 使用IDEA配置Maven搭建開發(fā)框架ssm教程

    使用IDEA配置Maven搭建開發(fā)框架ssm教程

    這篇文章主要為大家詳細(xì)介紹了使用IDEA配置Maven搭建開發(fā)框架ssm教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Spring框架開發(fā)scope作用域分析總結(jié)

    Spring框架開發(fā)scope作用域分析總結(jié)

    這篇文章主要介紹了Spring框架開發(fā)中scope作用域的分析總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • Java實(shí)現(xiàn)自定義LinkedList類的示例代碼

    Java實(shí)現(xiàn)自定義LinkedList類的示例代碼

    LinkedList類跟ArrayList類不同,它通過指針以及結(jié)點(diǎn)的操作對(duì)鏈表進(jìn)行增刪改查。本文就來和大家分享下Java如何為實(shí)現(xiàn)自定義LinkedList類,需要的可以參考一下
    2022-08-08
  • spring security4 添加驗(yàn)證碼的示例代碼

    spring security4 添加驗(yàn)證碼的示例代碼

    本篇文章主要介紹了spring security4 添加驗(yàn)證碼的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02

最新評(píng)論

唐河县| 浮梁县| 二手房| 正蓝旗| 望江县| 佳木斯市| 上栗县| 项城市| 洪湖市| 南丹县| 永平县| 水富县| 荔浦县| 龙口市| 清远市| 大安市| 武宁县| 方正县| 临城县| 舟曲县| 濮阳县| 清远市| 胶南市| 二手房| 焦作市| 崇信县| 仙居县| 宣汉县| 越西县| 达拉特旗| 峨边| 汾西县| 修文县| 故城县| 阳信县| 新和县| 石首市| 唐山市| 青阳县| 双峰县| 安宁市|