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

Spring Boot 3.1控制器POST请求出现application/json类型错误

解决Spring Boot 3.1 POST接口415 Unsupported Media Type错误(关联实体引发)

在Spring Boot 3.1、Java 18、MySQL 8环境下调用POST接口提交JSON数据时出现415错误,且断点无法进入控制器方法,经排查是Bird实体关联的HealthCheck类导致的问题,可通过以下方案解决:

  • 修复关联关系的序列化循环问题
    HealthCheck类与Bird类的多对一关联容易引发序列化循环引用,导致Jackson无法正常解析请求体。可在HealthCheck的Bird关联字段上添加@JsonIgnore注解,直接忽略该字段的序列化/反序列化;若需要保留关联数据,可使用@JsonManagedReference(标注在Bird类的HealthCheck集合字段上)和@JsonBackReference(标注在HealthCheck的Bird字段上)来处理双向关联的序列化逻辑。

  • 配置LocalDateTime字段的序列化规则
    Spring Boot 3.x默认使用的Jackson版本对LocalDateTime的序列化需要明确配置:

    • 在application.properties中添加全局配置:
      spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
      spring.jackson.serialization.write-dates-as-timestamps=false
      
    • 或者在HealthCheck类的LocalDateTime字段上添加注解单独配置:
      @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
      private LocalDateTime checkTime;
      
  • 确保实体类符合序列化要求
    检查HealthCheck类是否包含无参构造方法(Jackson反序列化必须依赖无参构造),同时确保所有需要序列化的字段都有对应的getter和setter方法,缺少这些会导致Jackson无法完成请求体的解析。

  • 验证请求格式的正确性
    确认请求头中Content-Type必须设置为application/json,比如使用curl测试时需添加-H "Content-Type: application/json"参数;同时检查请求体JSON的键名与实体类字段名是否一致(默认Jackson采用驼峰命名匹配),避免因字段不匹配引发解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:10:04