最近我使用restlet将一些信息发布为Web服务。 jetty服务器中的代码主机相同,但在不同的服务器上我得到了2个版本的结果。
我认为当我调用webservice“http://.....api/currencies.json”时,它会使用jackson扩展将结果转换为json格式,但我不知道为什么会有不同的版本。
有人可以帮我解决问题,谢谢!
这是代码,我使用restlet扩展:json,xml,jackson,xstream。
@Get("json|xml")
public List<CurrencyInfoDTO> represent() {
return ...;
}
@XStreamAlias("currency")
public class CurrencyInfoDTO {
protected String code;
protected String sign;
....
}
输出版本1:
{
"list": [
{
"currency": [
{
"code": "CNY",
"sign": "¥",
"rate": 1
},
{
"code": "HKD",
"sign": "HK$",
"rate": 0.8145
},
]
}
]
}
输出版本2:
[
{
"code": "CNY",
"sign": "¥",
"rate": 1
},
{
"code": "HKD",
"sign": "HK$",
"rate": 0.8145
}
]
版本1的服务器是amazon aws的主机,版本2的服务器是我的本地开发机器。
我认为版本1作为对象输出,版本2作为数组输出。
我尝试在本地机器中删除jackson扩展,它将输出为版本1,所以我猜版本1使用xstream扩展,版本2使用jackson扩展,但为什么restlet使用不同的扩展来处理相同的方法输出
非常感谢! 瑞克
答案 0 :(得分:2)
类路径中Restlet扩展的相对位置很重要。尝试在org.restlet.ext.xstream之前放入org.restlet.ext.jackson JAR。
如果使用WAR,您还可以在Restlet引擎中手动调整转换器帮助器顺序。