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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM