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

Spring Boot中如何让指定字段使用默认Date序列化器

解决Spring Boot中特定Date字段跳过全局自定义序列化器的问题

快速解决方案

你可以通过给目标字段添加@JsonSerialize注解,显式指定使用Jackson自带的默认DateSerializer,来覆盖全局的自定义序列化配置。

详细步骤

首先,为了避免类名冲突(Jackson本身也有一个DateSerializer类),建议先修改你的自定义序列化器名称:

  1. 重命名自定义Date序列化器
public class CustomDateSerializer extends JsonSerializer<Date> {
    @Override
    public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String date = sdf.format(value);
        gen.writeString(date);
    }
}
  1. 更新全局ObjectMapper配置,使用改名后的序列化器:
@Bean
@Primary
public ObjectMapper serializingObjectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    SimpleModule module = new SimpleModule();
    module.addSerializer(Date.class, new CustomDateSerializer());
    objectMapper.registerModule(module);
    return objectMapper;
}
  1. 给目标字段添加注解,指定使用Jackson自带的默认序列化器:
    注意要导入Jackson官方的DateSerializer类,而非你自定义的:
import com.fasterxml.jackson.databind.ser.std.DateSerializer;

class MyClass {
    private Date dateToBeCustomeSerialized;
    
    @JsonSerialize(using = DateSerializer.class)
    private Date dateToBeDefaultSerialized;
}

原理说明

Jackson对字段级注解的优先级高于全局注册的序列化器,所以通过在dateToBeDefaultSerialized字段上显式指定默认序列化器,就能让该字段跳过全局的自定义配置,使用Jackson原生的Date序列化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:52:29