You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java EE REST CRUD应用POST请求JSON日期解析异常问题

解决JAX-RS解析JSON日期时的DateTimeParseException问题

这个坑我之前做Java EE REST项目的时候踩过!你遇到的DateTimeParseException本质是因为传入的JSON日期格式(2011-11-11)和JAX-RS默认使用的JSON反序列化器(通常是Jackson)期望的格式不匹配导致的。

默认情况下,Jackson会期望日期字符串包含时间部分,比如yyyy-MM-dd'T'HH:mm:ss这种格式,而你传的纯日期到索引10就结束了,解析器还在等着读取时间部分,自然就报错了。下面给你几种靠谱的解决方法:

方法1:给实体类的Date字段添加格式化注解

这是最直接的方式,针对单个字段指定解析格式。如果你用的是Jackson,只需要在实体类的Date字段上加上@JsonFormat注解:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;

public class YourEntity {
    // 其他业务字段...
    
    // 指定日期格式为yyyy-MM-dd,同时可以设置时区避免偏移问题
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createDate;
    
    // 对应的getter和setter方法
    public Date getCreateDate() {
        return createDate;
    }
    
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
}

方法2:全局配置日期解析格式

如果你的项目中有很多实体都有纯日期字段,不想一个个加注解,可以通过JAX-RS的Provider全局配置Jackson的ObjectMapper:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import javax.ws.rs.ext.ContextResolver;
import javax.ws.rs.ext.Provider;
import java.text.SimpleDateFormat;

@Provider
public class JacksonDateConfig implements ContextResolver<ObjectMapper> {
    private final ObjectMapper objectMapper;

    public JacksonDateConfig() {
        objectMapper = new ObjectMapper();
        // 设置全局的日期解析格式
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        objectMapper.setDateFormat(dateFormat);
        // 关闭默认的时间戳序列化,保证返回给前端的也是yyyy-MM-dd格式
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return objectMapper;
    }
}

把这个配置类放到JAX-RS能扫描到的包下,重启服务后所有日期字段都会按照指定格式解析和序列化。

额外注意事项

  • 如果你的项目用的是Java 8的LocalDate而不是java.util.Date,需要引入jackson-datatype-jsr310依赖,然后同样可以用@JsonFormat指定格式,或者在全局配置中注册JavaTime模块。
  • 时区设置很重要,建议统一用GMT+8或者项目要求的时区,避免不同环境下的日期偏移问题。

内容的提问来源于stack exchange,提问作者Vendel Serke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:21:43