1.全局序列化,如日期的格式,后端传多余参数是否报错等
serializerByType 序列化,
后台返回前端(从日期序列化为字符串)
deserializerByType 反序列化,
前端传参到后端(字符串从列化为日期),post 传参使用,如下;get 传参序列化看后面 【2 get 传参反序列化】
/**
* 批量保存
*
* @author mayanze
*/
@PostMapping("/batchSave")
public ResponseConsequence batchSave(@Valid @RequestBody DfBatchSaveParam param){
service.batchSave(param.getPhyUnitId(),param.getDataList());
return ResponseData.success();
}
package com.g_link.TwoRules.common.config;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.annotation.Bean;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 请求返回值格式化
* 后台-》前台
* @author mayanze
* @since 2023-10-19 11:23
*/
@JsonComponent
public class ResultFormatter {
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> {
builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)));
builder.deserializerByType(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)));
};
}
}
2. get 传参反序列化
package com.g_link.TwoRules.common.config;
import cn.hutool.core.date.LocalDateTimeUtil;
import org.springframework.format.Formatter;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Locale;
/**
* 请求参数格式化
* 前台-》后台,日期格式化
* @author mayanze
* @since 2023-10-19 14:47
*/
@Component
public class ParameterFormatter implements Formatter<LocalDateTime> {
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
@Override
public LocalDateTime parse(String text, Locale locale) {
return LocalDateTimeUtil.parse(text, DATE_TIME_FORMAT);
}
@Override
public String print(LocalDateTime object, Locale locale) {
return LocalDateTimeUtil.format(object, DATE_TIME_FORMAT);
}
}