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

使用Spring RestTemplate解析REST响应遇问题,急求解决方案

解决RestTemplate解析JSON响应失败的问题

我来帮你排查下问题,核心原因是你的实体类字段和返回的JSON字段不匹配,导致Jackson无法正确映射数据,具体问题和修复方案如下:

问题分析

对照你给出的JSON响应和实体类定义,有两处关键不匹配:

  1. JSON里的Status字段是大写开头,但你的GPSEnabledVehicles类里定义的是private String status;(小写s),Jackson默认遵循驼峰命名匹配规则,这里大小写不一致会导致字段无法赋值。
  2. JSON里的车辆数据数组是data,但你的类里对应的字段是vehicleDetails,字段名完全不对应,所以数组数据无法映射到集合中。

修复方案

最规范的做法是使用@JsonProperty注解显式指定JSON字段名,既保留Java代码的驼峰命名规范,又能正确绑定JSON数据。

修改后的实体类代码

1. GPSEnabledVehicles类

@JsonIgnoreProperties(ignoreUnknown = true) 
public class GPSEnabledVehicles { 
    @JsonProperty("Status")
    private String status; 
    @JsonProperty("data")
    private List<VehicleDetails> vehicleDetails; 

    // Getter和Setter方法
    public String getStatus() { return status; }
    public void setStatus(String status) { this.status = status; }
    public List<VehicleDetails> getVehicleDetails() { return vehicleDetails; }
    public void setVehicleDetails(List<VehicleDetails> vehicleDetails) { this.vehicleDetails = vehicleDetails; }
}

2. VehicleDetails类(需确保字段匹配)

还要注意VehicleDetails类的字段要和JSON数组里的元素对应,示例代码如下:

@JsonIgnoreProperties(ignoreUnknown = true)
public class VehicleDetails {
    @JsonProperty("VehicleNo")
    private String vehicleNo;
    @JsonProperty("lat")
    private String lat;
    @JsonProperty("lng")
    private String lng;
    @JsonProperty("timestamp")
    private String timestamp;
    @JsonProperty("speed")
    private String speed;

    // 对应的Getter和Setter方法
}

测试验证

修改完实体类后,再执行原有的RestTemplate代码:

RestTemplate restTemplate = new RestTemplate(); 
Response response = restTemplate.getForObject("你的请求URL", Response.class);

此时Jackson就能正确将JSON响应映射到你的实体类对象中了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:21