RestTemplate:如何处理元数据

时间:2013-10-18 09:34:05

标签: spring spring-mvc resttemplate

我必须使用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?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并且解决方法是创建一个包含元数据字段的包装器对象。这种方法非常有用,并且非常容易获得数据。

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

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

   @JsonProperty("data")
   City city;
}

当我处理它时,我有一个数据列表返回,并且

工作正常
@JsonProperty("data")
List<City> cities;