Неоднородный вывод при сериализации списков в com.thoughtworks.xstream Jettison JSON конвертер - PullRequest
2 голосов
/ 01 января 2012

У меня реальная проблема с пакетом Java Jettison JSON.По какой-то причине я получаю другое представление для списков длиной 1 и списков длиной> 1.

В следующем примере вы можете видеть, что я создаю два списка - один длиной 1 (list1) и один из длины 2 (list2):

@Test
public void test() throws JsonParseException {

    List<String> list1 = new ArrayList<String>();
    list1.add("1");

    List<String> list2 = new ArrayList<String>();
    list2.add("1");
    list2.add("2");

    XStream xstream = new XStream(new JettisonMappedXmlDriver());
    xstream.setMode(XStream.XPATH_ABSOLUTE_REFERENCES);

    String list1String = xstream.toXML(l1);
    String list2String = xstream.toXML(l2);

}

Что я получу обратно:

list1 = {"list":[{"string":**1**}]},
list2 = {"list":[{"string":**[1,2]**}]}.

Что я хотел бы получить обратно:

list1 = {"list":[{"string":**[1]**}]},
list2 = {"list":[{"string":**[1,2]**}]}

Почему это происходит?Это сводит iPhone JSON-парсер с ума (конечно, это уменьшенная версия проблемы).

Я видел много обсуждений, говорящих о том, чтобы отказаться от Джеттисона и работать с Джексоном, но это не вариантдля меня сейчас.

Спасибо!

...