Spring Boot REST服务JSON序列化报错:null Integer属性触发intValue()异常
解决Spring Boot接口JSON序列化null字段报错的问题
问题原因
当数据库中map_tab_id字段为null时,实体类MapArea的mapTabId属性会被JPA赋值为null,但Jackson在序列化JSON时触发了拆箱调用intValue()的错误,导致无法生成响应。核心是需要配置Jackson允许序列化null值,避免不必要的拆箱操作。
解决方案
方案1:全局配置Jackson序列化规则
在项目的application.properties或application.yml中添加配置,让Jackson默认包含所有字段(包括null值):
application.properties
spring.jackson.default-property-inclusion=always
application.yml
spring: jackson: default-property-inclusion: always
方案2:针对单个实体类配置
在MapArea实体类上添加Jackson注解,指定该类的所有字段都参与序列化(无论是否为null):
package com.findersgame.questtracker.model; import com.fasterxml.jackson.annotation.JsonInclude; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.Id; import jakarta.persistence.Table; @Entity @Table(name = "map_areas") @JsonInclude(JsonInclude.Include.ALWAYS) public class MapArea { @Id private Integer id; @Column private Integer mapTabId; @Column private String name; // 原有getter/setter方法不变 }
如果只想让mapTabId字段序列化null值,也可以单独给该字段添加注解:
@Column @JsonInclude(JsonInclude.Include.ALWAYS) private Integer mapTabId;
方案3:确认实体类字段类型
确保可空字段使用引用类型(如Integer)而非基本类型(如int),你当前的MapArea类中mapTabId已经是Integer,这一步已经符合要求,无需修改。
完成配置后,再次调用接口即可正常返回包含null值的JSON响应。
内容的提问来源于stack exchange,提问作者BluePrint
相关产品推荐
相关产品推荐

