All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.dreamroute.mybatis.pro.base.codec.date.LocalDateTimeDeserializer Maven / Gradle / Ivy

The newest version!
package com.github.dreamroute.mybatis.pro.base.codec.date;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.text.CharSequenceUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.github.dreamroute.mybatis.pro.base.codec.PropertyAliasCache;
import org.springframework.beans.BeanUtils;

import java.io.IOException;
import java.time.LocalDateTime;

/**
 * 描述:日期反序列化,将'yyyy-MM-dd HH:mm:ss'反序列化成{@link java.time.LocalDateTime}类型
 *
 * @author w.dehi.2021-12-19
 */
public class LocalDateTimeDeserializer extends JsonDeserializer {
    @Override
    public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        String name = PropertyAliasCache.getFieldAliasMap(p);
        Class propertyType = BeanUtils.findPropertyType(name, p.getCurrentValue().getClass());
        if (LocalDateTime.class.isAssignableFrom(propertyType)) {
            String dateStr = p.getValueAsString();
            if (CharSequenceUtil.isNotBlank(dateStr)) {
                try {
                    return LocalDateTimeUtil.parse(dateStr, DatePattern.NORM_DATETIME_FORMATTER);
                } catch (Exception e) {
                    throw new IllegalArgumentException("日期格式错误, 当前日期为: " + dateStr + ", 需要yyyy-MM-dd HH:mm:ss格式");
                }
            }
        }
        return null;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy