Выход JSON отличается в рестлете - PullRequest
2 голосов
/ 24 декабря 2011

В последнее время я использую рестлет, чтобы публиковать некоторую информацию в качестве веб-сервиса.Тот же код хоста на сервере Jetty, но на другом сервере я получил результат 2 версии.

Я думаю, что когда я вызываю webservice «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 является хостом в amazon aws, а сервер для версии 2 - мой локальный компьютер для разработки.

То, что я считаю, версия 1 выводится как объект, а версия 2 выводится как массив.

И я пытаюсь удалить расширение Джексона на моем локальном компьютере, оно будет выводиться как версия 1, так что я предполагаю, что версия 1 использует расширение xstream, а версия 2 использует расширение Джексона, но почему рестлет использует другое расширение для обработки вывода того же метода?

чемного anks!Rick

1 Ответ

2 голосов
/ 26 декабря 2011

Относительное положение расширений Restlet в classpath имеет значение.Попытка поместить org.restlet.ext.jackson JAR перед org.restlet.ext.xstream one.

Если вы используете WAR, вы также можете вручную настроить порядок помощников конвертера в движке Restlet.

...