我必须使用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?
答案 0 :(得分:1)
我遇到了同样的问题,并且解决方法是创建一个包含元数据字段的包装器对象。这种方法非常有用,并且非常容易获得数据。
在你的情况下,核心模型显然是城市,但然后包装器对象将是这样的
class CityWrapper{
String message;
String success;
Integer results;
@JsonProperty("data")
City city;
}
当我处理它时,我有一个数据列表返回,并且
工作正常@JsonProperty("data")
List<City> cities;