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

Spring Boot JSON解码错误:DTO含对应字段仍提示Unrecognized field

问题分析与解决

1. 优先修正请求JSON的语法错误

你发送的POST请求中JSON格式存在两处错误:

  • id字段的键名引号未正确闭合:应写为"id": "123"而非"id: "123"
  • id与type字段之间缺少逗号分隔

修正后的标准JSON请求体应为:

{
    "id": "123",
    "type": "code"
}

2. Jackson无法识别DTO字段的核心原因

报错显示0 known properties,说明Jackson完全无法识别Issue类中的id和type字段,主要有以下几种可能:

(1)Lombok注解未生效

@Data注解需要正确生成getter/setter方法,Jackson依赖这些方法完成序列化/反序列化。请检查:

  • 项目依赖中已正确引入Lombok(Maven需在pom.xml中添加依赖,Gradle同理)
  • IDE已开启Lombok支持:比如IntelliJ需安装Lombok插件,并在设置中启用Annotation Processing
  • 编译后查看Issue类的class文件,确认已生成getId()、setId()、getType()、setType()方法

(2)DynamoDB注解干扰Jackson字段识别

部分DynamoDB集成场景下,相关注解可能导致Jackson无法自动检测私有字段。可以通过添加@JsonProperty注解明确指定字段映射:

@Data
@NoArgsConstructor
@AllArgsConstructor
@DynamoDBTable(tableName = "")
public class Issue {

    @DynamoDBHashKey
    @JsonProperty("id")
    private String id;

    @DynamoDBAttribute
    @JsonProperty("type")
    private String type;
}

(3)Jackson全局配置限制

检查项目的application.properties/application.yml中是否存在限制Jackson字段识别的配置,比如:

spring.jackson.visibility.field=non_public

若有此类配置,需调整为允许Jackson访问私有字段,或确保字段有对应的getter/setter方法。

3. 临时排查方案

若需快速验证,可以在Issue类上添加@JsonIgnoreProperties(ignoreUnknown = true),临时绕过未知字段校验,但这只是临时手段,建议找到根本原因后移除。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:22:54