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
相关产品推荐
相关产品推荐

