1

我必须使用一个 REST Web 服务,它对所有请求都具有以下语法:

{
  message: "OK",
  success: true,
  results: 1,
  data: {
    name: "Berlin",
    lat: 52.2,
    lon: 13.25,
    id: 1701
  },
  (...)
}

当我尝试使用反序列化时:

City source = getRestTemplate().getForObject("http://myws.com/cities/{cityId}", City.class, "1701");

默认的 HttpMessageConverter 尝试在 City bean 中查找名为 message、success、results 的属性,并且由于找不到它们,所以它抛出了一个异常。

我想知道是否有任何方法可以利用默认的 HttpMessageConverter 但以某种方式告诉它以不同的方式解释消息、成功和结果,还是我必须完全创建自己的 HttpMessageConverter?

4

1 回答 1

1

我有同样的问题,解决它的方法是创建一个包含元数据字段的包装器对象。事实证明,这种方法非常有用,并且非常容易获取数据。

在您的情况下,核心模型显然是城市,但包装器对象将是这样的

class CityWrapper{
   String message;
   String success;
   Integer results;

   @JsonProperty("data")
   City city;
}

当我处理它时,我得到了一个数据列表,并且效果很好

@JsonProperty("data")
List<City> cities;
于 2014-04-25T15:49:26.003 回答