【问题标题】:Json output is different in restletJson输出在restlet中不同
【发布时间】:2011-12-24 14:39:31
【问题描述】:

最近我使用restlet 将一些信息发布为Web 服务。 码头服务器中的相同代码主机,但在不同的服务器中我得到了 2 个版本的结果。

我想当我调用网络服务“http://.....api/currencies.json”时,它会使用杰克逊扩展将结果转换为 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 的服务器是亚马逊 AWS 中的主机,版本 2 的服务器是我用于开发的本地机器。

我认为版本 1 输出为对象,版本 2 输出为数组。

我尝试在我的本地机器中删除jackson扩展,它会输出为版本1,所以我猜版本1使用xstream扩展,版本2使用jackson扩展,但是为什么restlet使用不同的扩展来处理相同的方法输出?

非常感谢! 瑞克

【问题讨论】:

    标签: json jackson restlet


    【解决方案1】:

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

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

    【讨论】:

    • 我正在使用 WAR,我会检查一下你所说的。感谢重播。
    猜你喜欢
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多