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

Spring Boot GET接口返回空对象数组问题排查求助

问题根因

Spring Boot默认使用Jackson对返回的Java对象做JSON序列化,Jackson默认仅能访问类的public属性,或者通过public getter方法读取属性值进行序列化。你定义的Movie类所有属性都是包私有访问权限,也没有提供对应的public getter方法,虽然你配置了spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false避免了序列化报错,但序列化后无法读取到任何属性值,最终返回空JSON对象。

解决方法

  • 方案1:为Movie类的所有属性添加public getter方法(推荐)
    可以手动添加,也可以引入Lombok依赖后给Movie类加@Data注解自动生成getter、setter等通用方法。手动添加示例:

    public class Movie {
      String directory;
      String name;
      boolean isPlaying;
      int watchedCounter;
    
      public Movie(String directory, String name, boolean isPlaying, int watchedCounter) {
        this.directory = directory;
        this.name = name;
        this.isPlaying = isPlaying;
        this.watchedCounter = watchedCounter;
      }
    
      public String getDirectory() { return directory; }
      public String getName() { return name; }
      public boolean isPlaying() { return isPlaying; }
      public int getWatchedCounter() { return watchedCounter; }
    }
    

    注意基础类型boolean的getter命名规则为isXxx,如果是包装类Boolean则命名为getXxx,避免序列化时字段名异常。

  • 方案2:配置Jackson支持序列化非public字段
    不想修改Movie类的话,直接在application.properties中添加如下配置,让Jackson可以直接读取非public的字段值:

    spring.jackson.visibility.field=any
    

修改完成后重新启动项目访问接口,即可返回带字段值的正常JSON结果。

内容的提问来源于stack exchange,提问作者Moshiko ben abu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:06:10