




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第關(guān)于@JSONField和@JsonFormat的使用區(qū)別說(shuō)明@JSONField和@JsonFormat的區(qū)別
@JSONField是阿里巴巴下fastjson下的,@JsonFormat是jackson下面的。
一、@JSONField的常用方式
1.1、name的用法:
實(shí)體類:
packagecom.xiaobu.entity;
importcom.alibaba.fastjson.annotation.JSONField;
importlombok.Data;
importjavax.persistence.*;
importjava.io.Serializable;
*@authorxiaobu
*@versionJDK1.8.0_171
*@dateon2025/12/419:00
*@descriptionV1.0
@Data
publicclassRolesimplementsSerializable{
privatestaticfinallongserialVersionUID=5775171105018867238L;
@JSONField(name=role_id)
@Column(name=RoleId)
privateIntegerRoleId;
@JSONField(name=role_desc)
@Column(name=RoleDesc)
privateStringRoleDesc;
}
測(cè)試類:
*@authorxiaobu
*@date2025/12/516:53
*@descprition表明json不區(qū)分大小寫都能轉(zhuǎn)換
*@version1.0
*beantoJSON:{role_desc:admin,role_id:8}
*需要轉(zhuǎn)換的json:{ROLE_DESC:ADMIN,ROLE_ID:8}
*RoleDesc:ADMIN
@Test
publicvoidtestJSONField(){
Rolesroles=newRoles();
roles.setRoleDesc(admin
roles.setRoleId(8);
StringjsonStr=JSONObject.toJSONString(roles);
System.out.println(beantoJSON:+jsonStr);
//改變json的key為大寫
jsonStr=jsonStr.toUpperCase();
System.out.println(需要轉(zhuǎn)換的json:+jsonStr);
roles=JSONObject.toJavaObject(JSONObject.parseObject(jsonStr),Roles.class);
System.out.println(RoleDesc:+roles.getRoleDesc());
}
1.2format的用法:
實(shí)體類:
*任務(wù)接收時(shí)間
@JsonFormat(pattern=yyyy-MM-dd,timezone=GMT+8)
@JSONField(format=yyyy-MM-dd)
@Column(name=TaskAcceptTime)
privateDateTaskAcceptTime;
*任務(wù)完成時(shí)間
@JsonFormat(pattern=yyyy-MM-ddHH:mm:ss,timezone=GMT+8)
@JSONField(format=yyyy-MM-dd)
@Column(name=TaskCompleteTime)
privateDateTaskCompleteTime;
測(cè)試類:
@Test
publicvoidfindByExample(){
Tasktask=newTask();
task.setTaskId(HYR08274-0804
Exampleexample=newExample(Task.class);
Example.Criteriacriteria=example.createCriteria();
if(StringUtils.isNotBlank(task.getTaskId())){
criteria.andLike(TaskId,%+task.getTaskId()+%
//TaskAcceptTime=MonAug0400:00:00CST2008,TaskCompleteTime=FriNov0700:00:00CST2008
ListTasktasks=taskMapper.selectByExample(example);
System.out.println(tasks);
//taskAcceptTime:2008-08-04,taskCompleteTime:2008-11-07
StringfastJsonStr=JSON.toJSONString(tasks);
System.out.println(fastJsonStr=+fastJsonStr);
ObjectMapperMAPPER=newObjectMapper();
try{
//TaskAcceptTime:2008-08-04,TaskCompleteTime:2008-11-0700:00:00
Stringujosn=MAPPER.writeValueAsString(tasks);
System.out.println(ujosn=+ujosn);
}catch(JsonProcessingExceptione){
e.printStackTrace();
}
@JsonFormat(pattern=yyyy-MM-dd,timezone=GMT+8)必須加上時(shí)區(qū)。
@JSONField(format=yyyy-MM-dd)
這兩個(gè)的作用都是格式化日期時(shí)間。且只能作用在日期時(shí)間上。
補(bǔ)充:前臺(tái)傳后臺(tái)
@DateTimeFormat(pattern=yyyy-MM-dd)
@JsonFormat與@DateTimeFormat用法及注意事項(xiàng)
@JsonFormat
@JsonFormat,使用該注解前需要添加jackson相關(guān)的依賴包
用于服務(wù)器傳給前端json數(shù)據(jù)時(shí)對(duì)Date類型時(shí)間進(jìn)行的格式化
@JsonFormat(pattern=yyyy-MM-ddHH:mm:ss,timezone=GMT+8)
pattern就表示需要轉(zhuǎn)變的格式,timezone表示處在的時(shí)區(qū)(國(guó)內(nèi)是東八區(qū))
因?yàn)?,jackson在序列化時(shí)間時(shí)是按照國(guó)際標(biāo)準(zhǔn)時(shí)間GMT進(jìn)行格式化的,而在國(guó)內(nèi)默認(rèn)時(shí)區(qū)使用的是CST時(shí)區(qū),兩者相差8小時(shí)
如果沒(méi)有用@JsonFormat對(duì)時(shí)間進(jìn)行格式化,返回給前端的將是一個(gè)時(shí)間戳。如圖所示。
使用了@JsonFormat之后,時(shí)間格式正確顯示。如圖所示。
@JsonFormat(pattern=yyyy-MM-ddHH:mm:ss,timezone=GMT+8)
注意事項(xiàng)
@JsonFormat(pattern=yyyy-MM-ddHH:mm:ss,timezone=GMT+8)
pattern中定義的格式的大小寫要注意,不要寫錯(cuò)。。。
@DateTimeFormat
@DateTimeFormat是spring的注解,spring工程下不在需要額外引入其他依賴
由于客戶端傳給服務(wù)端的時(shí)間參數(shù)是字符串類型,如果直接使用java.util.Date下的Date接受的話,會(huì)報(bào)400的異常(400異常表示服務(wù)器不處理該請(qǐng)求,多半是傳入的參數(shù)問(wèn)題)
可以使用@DateTimeFormat將客戶端發(fā)送過(guò)來(lái)的時(shí)間參數(shù)轉(zhuǎn)換成想要的類型
@DateTimeFormat(pattern=yyyy-MM-ddHH:mm:ss)
pattern定義需要轉(zhuǎn)換的格式(跟前面一樣。大小寫需要嚴(yán)格定義)
這樣
服務(wù)端就可以正確接收,打印的時(shí)間參數(shù)為
MonApr0116:26:25CST2025
注意:@JsonFormat與@DateTimeFormat只是定義時(shí)間參數(shù)在客戶端和服務(wù)端之間轉(zhuǎn)換格式,控制臺(tái)、Debug顯示的還是java.util.Date下的Date類型形式,如果想要轉(zhuǎn)換的話可以自己使用SimpleDateFormat
SimpleDateFormatsdf=newSimpleDateFormat(yyyy-MM-ddHH:mm:ss
一些特殊情況
如果使用pattern=yyyy-MM-dd接收上述客戶端的參數(shù)
@DateTimeFormat(pattern=yyyy-MM
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅娘員工合同協(xié)議書(shū)
- 臘肉工廠合作協(xié)議書(shū)
- 購(gòu)房返租回購(gòu)協(xié)議書(shū)
- 貼膜學(xué)徒合同協(xié)議書(shū)
- 自考行政管理創(chuàng)新模型試題及答案
- 結(jié)對(duì)協(xié)助共建協(xié)議書(shū)
- 藥物常識(shí)與執(zhí)業(yè)藥師試題及答案
- 行政法與政府順應(yīng)性的法律框架試題及答案
- 美國(guó)退出全面協(xié)議書(shū)
- 裝修質(zhì)量異議協(xié)議書(shū)
- 國(guó)網(wǎng)北京市電力公司授權(quán)委托書(shū)(用電)
- 邊坡支護(hù)之錨桿施工技術(shù)ppt版(共35頁(yè))
- 黃芩常見(jiàn)的病蟲(chóng)害癥狀及防治措施
- 中小學(xué)教育懲戒規(guī)則(試行)全文解讀ppt課件
- 思政課社會(huì)實(shí)踐報(bào)告1500字6篇
- GB∕T 25119-2021 軌道交通 機(jī)車車輛電子裝置
- 電池PCBA規(guī)格書(shū)
- 機(jī)械零件加工驗(yàn)收檢驗(yàn)記錄(共2頁(yè))
- 機(jī)械加工切削全參數(shù)推薦表
- 終端塔基礎(chǔ)預(yù)偏值(抬高值)計(jì)算表格
- 海外醫(yī)療服務(wù)委托合同協(xié)議書(shū)范本模板
評(píng)論
0/150
提交評(píng)論