spring的Converter自定义参数转换

需求场景

有时候项目中移动端和小程序之间可能时间格式的入参不一致,在统一不了格式的时候,只能后端默默扛起所有。

解决方案

此时可以使用我这篇博文中的字段自定义序列化和反序列化
https://blog.csdn.net/weixin_43944305/article/details/107804121

或者使用spring提供的Converter,但是只有get请求或者post表单()会自动应用上

post表单如下,其实就是以key-value的形式传输
spring的Converter自定义参数转换_第1张图片

Converter demo如下

package com.felix.spring_cloud_one.conver;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

@Component
public class SelfLocalDateTimeResolve implements Converter<String, LocalDateTime> {


    @Override
    public LocalDateTime convert(String source) {
        if(source.contains("-")){
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            return LocalDateTime.parse(source, formatter);
        }else if (source.contains("/")){
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
            return LocalDateTime.parse(source, formatter);
        }

        return null;
    }
}





package com.felix.spring_cloud_one.controller;

import com.felix.spring_cloud_one.params.TestLocalDateTimeParams;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("converter")
public class ConverterController {

    //consumes接收格式,produces返回格式
    @PostMapping(value = "testLocalDateTime" ,consumes = "application/x-www-form-urlencoded", produces = "application/json")
    public Object testLocalDateTime(TestLocalDateTimeParams params){
        return params;
    }

}


你可能感兴趣的:(springboot,spring)