基于@JsonProperty的使用說明
一、背景
在熟悉代碼的過程中,看到了@JsonProperty注解的使用,查了下使用的方法,但是總覺得欠缺了點(diǎn)什么東西,所以自己實(shí)踐了下這個(gè)注解的作用,由于時(shí)間原因沒有熟悉究竟底層是怎么實(shí)現(xiàn)的.
所以這里只是對使用和注意事項(xiàng)做下分析,底層實(shí)現(xiàn)的話這里先mark下.
二、使用方式
@JsonProperty注解主要用于實(shí)體類的屬性上,作用可以簡單的理解為在反序列化的時(shí)候給屬性重命名(多一個(gè)名字來識別)
這里以springboot的小demo來驗(yàn)證下這個(gè)注解的作用
Test.java實(shí)體類:
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時(shí)候打印的是原本屬性的名稱

兩種方式都可以反序列化成Test對象.

交換使用也是可以反序列化成Test對象.

三、注意事項(xiàng)
1 使用JSON.toJsonString的時(shí)候?qū)嶓w類需要有g(shù)etter方法,否則會(huì)輸出{}
2 @requestBody注解需要在post請求下才能正常使用.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java中基本數(shù)據(jù)類型與Object的關(guān)系說明
這篇文章主要介紹了java基本數(shù)據(jù)類型與Object的關(guān)系說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
關(guān)于Spring Cloud 本地屬性覆蓋的問題
這篇文章主要介紹了關(guān)于Spring Cloud 本地屬性覆蓋的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼
這篇文章主要介紹了kafka生產(chǎn)者和消費(fèi)者的javaAPI的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06
Maven配置單倉庫與多倉庫的實(shí)現(xiàn)(Nexus)
本文主要介紹了Maven配置單倉庫與多倉庫的實(shí)現(xiàn)(Nexus),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
基于Spring Web Jackson對RequestBody反序列化失敗的解決
這篇文章主要介紹了基于Spring Web Jackson對RequestBody反序列化失敗的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

