多媒體網站開發(fā)助理百度快照如何優(yōu)化
目錄
1.jackson
2.fastjson
3.總結
1.jackson
jackson是spring mvc默認的JSON解析方法,前端的數據序列化處理之后,后端經過反序列化處理可以直接使用實體對象進行接收。后端接口返回實體對象,經過序列化處理后前端可以接收并進行處理。
后端接收前端的日期參數以及后端的日期參數傳遞給前端,在序列化處理中,需要進行特殊處理。否則后端接收的時間不正確,會多8個小時;前端顯示的時間沒有被格式化。當然也可以在前端使用一些組件進行特殊處理。這里主要說明如何在后端進行處理。
(1)統一處理
①重寫jsckson默認的配置,設置日期的格式
# 因為SpringBoot幫我們配置了JacksonAutoConfiguration,所以我們這邊是可以正常返回接口的
# 根據JacksonAutoConfiguration里的代碼我們是可以重寫ObjectMapper去完成日期的代碼格式化
# 在我們了解到JacksonAutoConfiguration類時,我們首先了解到的是JacksonHttpMessageConvertersConfiguration
# 在里面有MappingJackson2HttpMessageConverter,我們去重新定義這個我們也是可以解決的,但是就沒有第一種方式比較簡便
# 在WebMvcConfig類中我會放上這兩種方式的代碼,但會注釋第二種方式的代碼
@Configuration
public class WebMvcConfig {//@Bean//MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){// MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();// ObjectMapper objectMapper = new ObjectMapper();// objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));// converter.setObjectMapper(objectMapper);// return converter;//}@BeanObjectMapper objectMapper(){ObjectMapper objectMapper = new ObjectMapper();objectMapper.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));return objectMapper;}}
②在配置文件中配置日期格式
spring:jackson:date-format: yyyy-MM-dd
(2)單獨處理
①使用注解方式,在實體類中配置注解,格式需要和前端傳遞的日期格式一致,否則會報錯。
/*** 綁定時間*/@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date createTime;
?因為日期格式的不同,一般使用單獨配置的方式,在實體類中添加注解,用于對前端傳遞的數據進行格式化及時區(qū)處理以及對后端的數據進行格式化傳遞給前端進行顯示。
jackson相關的注解如下:
2.fastjson
fastjson是阿里的一款json工具,部分版本存在漏洞,使用時需要注意。
官網:http://code.alibabatech.com/wiki/display/FastJSON/Overview
在日期的格式化方式需要使用JSONField注解進行處理
比如在接口中使用String類型的參數接收前端傳遞的表單數據,然后再后端使用fastJson進行格式化處理,如果存在日期相關的數據,需要使用JSONfIeld進行處理。
/*** 上傳時間*/@JSONField(format = "yyyy-MM-dd HH:mm:ss")private Date uploadTime;/*** 發(fā)布時間*/@JSONField(format = "yyyy-MM-dd HH:mm")private Date releaseTime;
3.總結
springmvc默認將前端數據使用jsckson進行轉換,所有涉及到前端日期類型數據的接受以及回傳給前端的日期數據,相關的字段要使用jsonformat注解
在代碼中使用fastjson進行json格式的轉換需要使用JSONField注解進行日期格式的轉換,使用jsonformat會報轉換失敗的錯誤
com.alibaba.fastjson.JSONException: For input string: "2024-01-10 09:56"
參照?
jackson與fastjson_jackson和fastjson-CSDN博客
SpringBoot中默認的JSON解析方案 日期格式化多種解決方案_json格式化采用默認方式了-CSDN博客
Fastjson JSONField_w3cschool
Java日期格式化(@JsonFormat @JSONField)_jsonfield 格式化時間-CSDN博客?