基于@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類需要有getter方法,否則會輸出{}
2 @requestBody注解需要在post請求下才能正常使用.
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
java實現(xiàn)百度坐標的摩卡托坐標與火星坐標轉換的示例
這篇文章主要介紹了java實現(xiàn)百度坐標的摩卡托坐標與火星坐標轉換的示例,需要的朋友可以參考下2014-03-03
在SpringBoot中利用RocketMQ實現(xiàn)批量消息消費功能
RocketMQ 是一款分布式消息隊列,支持高吞吐、低延遲的消息傳遞,對于需要一次處理多條消息的場景,RocketMQ 提供了批量消費的機制,這篇文章將展示如何在 Spring Boot 中實現(xiàn)這一功能,感興趣的小伙伴跟著小編一起來看看吧2024-11-11
java線程并發(fā)blockingqueue類使用示例
BlockingQueue是一種特殊的Queue,若BlockingQueue是空的,從BlockingQueue取東西的操作將會被阻斷進入等待狀態(tài)直到BlocingkQueue進了新貨才會被喚醒,下面是用BlockingQueue來實現(xiàn)Producer和Consumer的例子2014-01-01
SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例
本文主要介紹了SpringBoot+Druid開啟監(jiān)控頁面的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-06-06

