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());
        }
    }
    

      

  • 相关阅读:
    1065-两路合并
    1064-快速排序
    1063-冒泡排序
    1062-直接插入排序
    1061-简单选择排序
    1058-Tom and Jerry
    关于WinForm引用WPF窗体
    ref与out的区别
    看到他我一下子就悟了(续)---委托
    域名的a记录转过来他的公网ip
  • 原文地址:https://www.cnblogs.com/jifeng/p/9700911.html
Copyright © 2011-2022 走看看