基于@JsonProperty的使用說明
一、背景
在熟悉代碼的過程中,看到了@JsonProperty注解的使用,查了下使用的方法,但是總覺得欠缺了點什么東西,所以自己實踐了下這個注解的作用,由于時間原因沒有熟悉究竟底層是怎么實現(xiàn)的.
所以這里只是對使用和注意事項做下分析,底層實現(xiàn)的話這里先mark下.
二、使用方式
@JsonProperty注解主要用于實體類的屬性上,作用可以簡單的理解為在反序列化的時候給屬性重命名(多一個名字來識別)
這里以springboot的小demo來驗證下這個注解的作用
Test.java實體類:
import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; /** * @date: 2020/8/17 */ @Data @NoArgsConstructor @AllArgsConstructor public class Test { @JsonProperty(value = "fake_name", required = true) private String fakeName; @JsonProperty(value = "fake_old", required = true) private Integer fakeOld; @Override public String toString() { return "Test{" + "fakeName='" + fakeName + '\'' + ", fakeOld=" + fakeOld + '}'; } }
Test.controller類:
import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.util.List; import javax.annotation.Resource; /** * @date: 2020/7/30 */ @Api(tags = "測試接口") @RestController public class TestController { @ApiOperation(value="測試") @PostMapping("/test") public SingleResponse<String> getCodesByMenuCode(@RequestBody Test test) { Test param = test; System.err.println(JSON.toJSONString(param)); System.err.println(param.toString()); Test o1 = JSON.parseObject("{\"fakeName\":\"test\",\"fakeOld\":1}", Test.class); Test o2 = JSON.parseObject("{\"fake_name\":\"test\",\"fake_old\":1}", Test.class); return SingleResponse.buildSuccessRes("success"); } }
swagger測試:
可以看到接到了swagger下劃線命名的變量
在Json.toJsonString時候打印的是原本屬性的名稱
兩種方式都可以反序列化成Test對象.
交換使用也是可以反序列化成Test對象.
三、注意事項
1 使用JSON.toJsonString的時候?qū)嶓w類需要有g(shù)etter方法,否則會輸出{}
2 @requestBody注解需要在post請求下才能正常使用.
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java中基本數(shù)據(jù)類型與Object的關(guān)系說明
這篇文章主要介紹了java基本數(shù)據(jù)類型與Object的關(guān)系說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03關(guān)于Spring Cloud 本地屬性覆蓋的問題
這篇文章主要介紹了關(guān)于Spring Cloud 本地屬性覆蓋的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03kafka生產(chǎn)者和消費者的javaAPI的示例代碼
這篇文章主要介紹了kafka生產(chǎn)者和消費者的javaAPI的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06Maven配置單倉庫與多倉庫的實現(xiàn)(Nexus)
本文主要介紹了Maven配置單倉庫與多倉庫的實現(xiàn)(Nexus),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01基于Spring Web Jackson對RequestBody反序列化失敗的解決
這篇文章主要介紹了基于Spring Web Jackson對RequestBody反序列化失敗的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09