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

如何配置Spring Boot以仅接收所需的JSON数据

如何配置Spring Boot以仅接收所需的JSON数据

我太懂这种痛苦了——调用API返回几百个字段的JSON,却只需要其中两三个,还要写一堆冗余的POJO代码?其实Spring Boot配合它默认的JSON处理库Jackson,就能轻松解决这个问题,下面给你几种实用的方案:

  • 单个POJO快速解决:用注解忽略未知字段
    最简单的方式就是只在你的Receive类里定义你需要的字段,然后给类加上@JsonIgnoreProperties(ignoreUnknown = true)注解。这样Jackson在反序列化的时候,会自动跳过那些你没定义的字段,不会因为存在未知属性而报错。

    示例代码:

    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    import lombok.Data; // 用Lombok可以省去写getter/setter,没有的话就自己手动编写
    
    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    class Receive {
        private String attribute4;
        private Integer attribute10; // 字段类型根据API返回的实际数据调整
    }
    
  • 全局配置:一次设置,所有POJO通用
    如果你不想每个类都加注解,可以在Spring Boot里做全局配置,让所有JSON反序列化操作都自动忽略未知字段。有两种实现方式:

    1. 通过配置文件实现
      在application.properties里添加:

      spring.jackson.deserialization.fail-on-unknown-properties=false
      

      或者用application.yml的格式:

      spring:
        jackson:
          deserialization:
            fail-on-unknown-properties: false
      
    2. 通过配置类实现
      如果你需要更定制化的Jackson配置,可以写一个配置类:

      import com.fasterxml.jackson.databind.ObjectMapper;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      public class JacksonConfig {
          @Bean
          public ObjectMapper objectMapper() {
              ObjectMapper objectMapper = new ObjectMapper();
              // 关闭"未知属性触发报错"的特性
              objectMapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
              return objectMapper;
          }
      }
      
  • 嵌套对象的处理
    如果API返回的是嵌套结构的JSON,你也只需要定义你关心的嵌套部分就行,同样给嵌套类加上@JsonIgnoreProperties(ignoreUnknown = true)注解。比如:

    @JsonIgnoreProperties(ignoreUnknown = true)
    @Data
    class Receive {
        private String attribute4;
        private NestedData nestedData;
    
        @JsonIgnoreProperties(ignoreUnknown = true)
        @Data
        static class NestedData {
            private String attribute10; // 只取嵌套对象里的这个目标字段
        }
    }
    

不管你是用RestTemplate还是WebClient来调用外部API,这些配置都会生效,因为Spring Boot默认就是用Jackson来处理JSON的序列化和反序列化的。这样你就不用再写那些又长又冗余的POJO啦!

备注:内容来源于stack exchange,提问作者User69

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 10:47:39