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

SpringBoot下使用Jackson实现布尔值与Status枚举序列化/反序列化失败求助

错误根因

  1. 你之前写的@JsonCreator静态工厂方法参数上加了@JsonProperty("enabled"),该配置会让Jackson期望接收的是一个包含enabled字段的JSON对象,而你的请求中enabled字段直接传入布尔值,因此触发类型不匹配错误。
  2. 单独使用@JsonValue默认仅支持序列化时输出布尔值,Jackson默认不会自动将布尔值反向映射为枚举值,因此反序列化报错。

可行解决方案

直接修改Status枚举的注解配置即可,无需额外自定义序列化/反序列化器,适配Jackson 2.13.0版本:

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

public enum Status {
    
    DISABLED(false),
    ENABLED(true);
    
    private final boolean enabled;
    
    Status(boolean value){
        this.enabled = value;
    }

    // 序列化时输出对应布尔值
    @JsonValue
    public boolean value() {
        return this.enabled;
    }   

    // 反序列化时直接将传入的布尔值映射为枚举
    @JsonCreator
    public static Status forValue(Boolean status) {
        if (status == null) {
           return null;
        }
        return status ? ENABLED : DISABLED;
   }
}

验证说明

修改完成后,请求中enabled: true会自动映射为Status.ENABLED,enabled: false映射为Status.DISABLED,接口返回序列化时也会输出布尔值,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:03