zoukankan      html  css  js  c++  java
  • springboot @RequestBody使用JsonSerialize与 JsonDeserialize自定义转参数,处理Date日期格式

    JsonDeserialize:

    1、请求接收的是一个json,并且由对象接收

        @RequestMapping(value = "/query", method = {RequestMethod.POST},consumes = "application/json")
        public WebDataListResponse query(@RequestBody(required = true) DataLogQuryEntity dataLogQuryEntity){
    

    2、对象属性的set方法编写注解  

    DataLogQuryEntity对象中需要接受Date类型的对象:
    public class DataLogQuryEntity  {
    
    @JsonDeserialize(using = DateJsonDeserializer.class)
        public void setStartTime(Date startTime) {
            this.startTime = startTime;
        }
    
    }
    

      注lombok的注意一定要写在setter方法上

    3、自定义实现

    import com.fasterxml.jackson.core.JsonParser;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.DeserializationContext;
    import com.fasterxml.jackson.databind.JsonDeserializer;
    import org.apache.commons.lang3.StringUtils;
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class DateJsonDeserializer  extends JsonDeserializer<Date> {
        public static final SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        @Override
        public Date deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
            try {
                if (jsonParser != null && StringUtils.isNotEmpty(jsonParser.getText())) {
                    return format.parse(jsonParser.getText());
                } else {
                    return null;
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
                throw new RuntimeException(e);
            }
    
    
        }
    }
    

      

    JsonSerialize用法:

    1、对象的get方法应用注解

    @JsonSerialize(using = CustomDateSerializer.class)
        public LocalDateTime getUpdateTime() {
            return updateTime;
        }
    

    2、自定义实现

    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    
    import java.io.IOException;
    import java.time.LocalDateTime;
    
    public class CustomDateSerializer extends JsonSerializer<LocalDateTime> {
        @Override
        public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
            gen.writeString(value.toString());
        }
    }
    

      

  • 相关阅读:
    G450 Ubuntu14 无线网卡解决
    USB设备不能用。提示Windows 无法启动这个硬件设备。 (代码 19)
    帮你选处理器:CPU T9500-p9500-T9400-T9300-p8700对比分析!
    全球各大运营商黑莓ROM官网下载链接汇总
    查看80端口被占用的方法(IIS、apmserv、system)
    Windows 2003 服务器安全设置-批处理 (附参考链接)
    解决Windows时间同步失败问题!系统时间同步设置!
    WinHTTP Web Proxy Auto-Discovery Service
    关于“未使用GUID分区表”无法安装的解决方案
    DataGridView使用技巧六:冻结列或行
  • 原文地址:https://www.cnblogs.com/jifeng/p/9700911.html
Copyright © 2011-2022 走看看