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

Spring Boot中RestTemplate返回实体类属性为null问题求助

问题解决:RestTemplate反序列化后对象属性为null的原因及修复

问题根源

核心问题是JSON字段名与Java类属性的映射不匹配:返回的JSON字段是首字母大写格式(如"Id"、"TenId"),而Spring默认使用的Jackson库,默认命名策略会将Java属性按小驼峰(如id、tenId)去匹配JSON字段,导致无法正确绑定值,最终属性全部为null。

修复方案

有两种常用方式解决这个映射问题:

方案1:给属性添加@JsonProperty注解(推荐,针对性强)

在Workspace类的每个属性上添加@JsonProperty注解,指定对应的JSON字段名:

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

public class Workspace {

    @JsonProperty("Id")
    private String Id;

    @JsonProperty("TenId")
    private String TenId;

    @JsonProperty("Name")
    private String Name;

    @JsonProperty("Description")
    private String Description;

    @JsonProperty("Tags")
    private List<String> Tags;

    // 保留原有的getter、setter、无参/有参构造方法
}

方案2:全局配置Jackson命名策略(适合统一处理首字母大写的JSON)

如果你的项目中大量接口返回的都是首字母大写的JSON,可以在Spring Boot中全局配置Jackson的命名策略:

  • application.properties配置:
spring.jackson.property-naming-strategy=UPPER_CAMEL_CASE
  • Java配置类方式:
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
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.setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE);
        return objectMapper;
    }
}

关于Workspace[].class接收方式的确认

使用Workspace[].class作为exchange方法的响应类型是完全正确的,RestTemplate支持直接将JSON数组反序列化为Java数组,你后续通过Arrays.asList(employees1)转换为List的写法也没问题,只要解决了字段映射问题,这种方式就能正常获取属性值。

内容的提问来源于stack exchange,提问作者Pranav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:05:17