重定时器中的Json输出不同

时间:2011-12-24 14:39:32

标签: json jackson restlet

最近我使用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使用不同的扩展来处理相同的方法输出

非常感谢! 瑞克

1 个答案:

答案 0 :(得分:2)

类路径中Restlet扩展的相对位置很重要。尝试在org.restlet.ext.xstream之前放入org.restlet.ext.jackson JAR。

如果使用WAR,您还可以在Restlet引擎中手动调整转换器帮助器顺序。