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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:37:02