Java中BeanUtil.copyProperties()處理大小寫字段轉(zhuǎn)換問(wèn)題
問(wèn)題描述:
遇到這么個(gè)問(wèn)題, 需要在自己項(xiàng)目里面接入三方接口, 寫成一個(gè)工具類, 三方接口的入?yún)⒆侄稳谴髮懙? 而自己的項(xiàng)目入?yún)⒔y(tǒng)一的格式是小寫. 并且該接口字段比較多, 有 100 多個(gè)字段, 一個(gè)個(gè)字段 set 過(guò)去巨麻煩 (有二十多個(gè)接口要接), 然后我就想找找能不能用 BeanUtils.copyProperties() 方法直接拷貝的時(shí)候直接轉(zhuǎn)換大小寫, 最終找到了 hutool 包下的 BeanUtil, 有個(gè) @Alias 注解能解決.
案例如下:
三方接口的入?yún)?/p>
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TransRequest {
@ApiModelProperty("交易日期(必傳)")
private String DATE_TRAN;
@ApiModelProperty("交易時(shí)間(必傳)")
private String TIME_TRAN;
}
自己項(xiàng)目的入?yún)?/p>
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueryRequest {
@ApiModelProperty("交易日期(必傳)")
private String dataTran;
@ApiModelProperty("交易時(shí)間(必傳)")
private String timeTran;
}
解決方案:
引入 hutool 依賴
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
自己項(xiàng)目的入?yún)⒓由?hutool 包下的 @Alias 注解
import cn.hutool.core.annotation.Alias;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author hqp
* @date 2022/11/17 19:14
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class QueryRequest {
@ApiModelProperty("交易日期(必傳)")
@Alias("DATE_TRAN")
private String dataTran;
@ApiModelProperty("交易時(shí)間(必傳)")
@Alias("TIME_TRAN")
private String timeTran;
}
測(cè)試方法:
public static void main(String[] args) {
QueryRequest queryRequest = new QueryRequest();
queryRequest.setDataTran("20221117");
queryRequest.setTimeTran("191440");
System.out.println(queryRequest);
TransRequest transRequest = new TransRequest();
cn.hutool.core.bean.BeanUtil.copyProperties(queryRequest, transRequest);
System.out.println(transRequest);
}
運(yùn)行結(jié)果:
QueryRequest(dataTran=20221117, timeTran=191440)
TransRequest(DATE_TRAN=20221117, TIME_TRAN=191440)
問(wèn)題描述 2:
第二個(gè)問(wèn)題就是自己項(xiàng)目的入?yún)⒏秸{(diào)用的記錄及入?yún)⒍家暾匿浫氩僮饔涗洷? 發(fā)現(xiàn)用 com.alibaba.fastjson 的 JSON.toJSONString() 方法處理的 requestJson 如果是大寫字母開頭, 會(huì)自動(dòng)變更為小寫. 案例如下:
String queryRequestJson = com.alibaba.fastjson.JSON.toJSONString(queryRequest); System.out.println(queryRequestJson); String transRequestJson = com.alibaba.fastjson.JSON.toJSONString(transRequest); System.out.println(transRequestJson);
運(yùn)行結(jié)果:
{"dataTran":"20221117","timeTran":"191440"}
{"dATE_TRAN":"20221117","tIME_TRAN":"191440"}
而用 cn.hutool.json 的 JSONUtil.toJsonStr() 方法處理的 requestJson 如果有 @Alias 注解, 轉(zhuǎn)成 json 串的時(shí)候會(huì)直接用注解里面的值, 案例如下:
String queryRequestJson = cn.hutool.json.JSONUtil.toJsonStr(queryRequest); System.out.println(queryRequestJson); String transRequestJson = cn.hutool.json.JSONUtil.toJsonStr(transRequest); System.out.println(transRequestJson);
運(yùn)行結(jié)果
{"DATE_TRAN":"20221117","TIME_TRAN":"191440"}
{"DATE_TRAN":"20221117","TIME_TRAN":"191440"}
解決方案:
暫時(shí)也沒有找到其他方法, 目前我的解決方案就是 OpLogAspect 類里面直接按調(diào)用類區(qū)分使用的轉(zhuǎn)換方法, 兩種轉(zhuǎn)換方式一起用
String queryRequestJson = com.alibaba.fastjson.JSON.toJSONString(queryRequest); System.out.println(queryRequestJson); String transRequestJson = cn.hutool.json.JSONUtil.toJsonStr(transRequest); System.out.println(transRequestJson);
運(yùn)行結(jié)果:
{"dataTran":"20221117","timeTran":"191440"}
{"DATE_TRAN":"20221117","TIME_TRAN":"191440"}
目前是把問(wèn)題解決了, 以后如果找到了更好的處理方式再更新筆記.
到此這篇關(guān)于Java中BeanUtil.copyProperties()處理大小寫字段轉(zhuǎn)換問(wèn)題的文章就介紹到這了,更多相關(guān)Java BeanUtil.copyProperties()大小寫轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)現(xiàn)字符串大小寫轉(zhuǎn)換的常用方法
- Java漢字轉(zhuǎn)換拼音(大小寫)實(shí)例詳解
- Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)詳解
- 使用Java實(shí)現(xiàn)大小寫轉(zhuǎn)換實(shí)例代碼
- Java下變量大小寫駝峰、大小寫下劃線、大小寫連線轉(zhuǎn)換
- Java 大小寫最快轉(zhuǎn)換方式實(shí)例代碼
- Java字母大小寫轉(zhuǎn)換的方法
- Java金額大小寫的轉(zhuǎn)換方法
- 用Java將字符串的首字母轉(zhuǎn)換大小寫
- java實(shí)現(xiàn)人民幣大小寫轉(zhuǎn)換方法分享
相關(guān)文章
Hibernate連接三種數(shù)據(jù)庫(kù)的配置文件
今天小編就為大家分享一篇關(guān)于Hibernate連接三種數(shù)據(jù)庫(kù)的配置文件,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
學(xué)習(xí)Java之如何對(duì)時(shí)間進(jìn)行格式化
當(dāng)我們?cè)谀J(rèn)情況下構(gòu)造出來(lái)的時(shí)間對(duì)象,它的時(shí)間格式并不適合我們閱讀,并且在開發(fā)時(shí),pc端、Android端、iOS端等展示的時(shí)間格式可能也并不完全一樣,本文就從這幾個(gè)問(wèn)題給大家介紹如何對(duì)時(shí)間進(jìn)行格式化,感興趣的同學(xué)可以借鑒一下2023-05-05
SpringBoot集成Quartz實(shí)現(xiàn)定時(shí)任務(wù)方式(Cron表達(dá)式示例)
本文介紹了如何在SpringBoot項(xiàng)目中集成Quartz并使用Cron表達(dá)式進(jìn)行任務(wù)調(diào)度,通過(guò)添加依賴、創(chuàng)建任務(wù)、配置調(diào)度、啟動(dòng)項(xiàng)目和Cron表達(dá)式詳解,展示了Quartz的強(qiáng)大功能和靈活性2026-02-02
解決Intellij IDEA 使用Spring-boot-devTools無(wú)效的問(wèn)題
下面小編就為大家?guī)?lái)一篇解決Intellij IDEA 使用Spring-boot-devTools無(wú)效的問(wèn)題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Java編程中獲取JDK路徑的實(shí)現(xiàn)方式
本文介紹通過(guò)系統(tǒng)屬性、環(huán)境變量、正則表達(dá)式及第三方庫(kù)獲取Java JDK路徑的方法,強(qiáng)調(diào)跨平臺(tái)兼容性,適用于自動(dòng)化部署和構(gòu)建工具配置2025-09-09

