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

使用RestTemplate的exchange发GET请求返回响应体为null如何排查?

问题原因及解决方案
  • 核心问题:JSON返回字段与实体类属性名不匹配
    接口返回的JSON根字段为cars,但你的CarList类中对应的列表属性命名为carList,Jackson默认按字段名严格匹配映射,找不到对应字段就不会给属性赋值,最终得到null。
    解决方法二选一:
    1. 调整CarList类的属性命名,将private List<Car> carList;修改为private List<Car> cars;,同步修改对应的getter方法名
    2. 给原有属性加序列化注解,在carList属性上添加@JsonProperty("cars"),显式指定该属性对应JSON中的cars字段
  • 次要问题:当前方法未处理返回结果
    你编写的fetchCars方法仅完成了请求发起,拿到ResponseEntity对象后没有提取响应体做后续处理,可先添加打印逻辑验证结果:
// 拿到响应后先打印完整响应体
System.out.println(carList.getBody());
// 也可以直接修改方法返回值,将解析后的CarList返回给上层调用
  • 可选排查点
    1. 检查Car类的属性名是否和接口返回的字段完全匹配:carUid、model、price、soldAt,如果有字段名不一致同样会得到null值
    2. 如果Car类中soldAt用的是LocalDateTime等JDK8日期类型,普通Java项目需要额外引入jackson-datatype-jsr310依赖完成日期反序列化,Spring Boot项目自带该依赖无需额外引入
    3. 可以先打印原始响应字符串确认接口返回是否正常,避免鉴权、URL配置错误导致返回了异常内容:
// 先把响应类型改成String,打印原始返回内容
ResponseEntity<String> rawResponse = restTemplate.exchange(RequestEntity.get(new URI(url)).headers(headers).build(), String.class);
System.out.println(rawResponse.getBody());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:45:01