在com.thoughtworks.xstream Jettison JSON转换器中序列化列表时的非统一输出

时间:2012-01-01 16:06:06

标签: json xstream jettison

我遇到了Java Jettison JSON包的真正问题。 出于某种原因,我得到了长度为1的列表和长度> 1的列表的不同表示形式。 1。

在下一个例子中,您可以看到我正在创建两个List - 一个长度为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解析器疯狂(当然这是问题的缩小版本)。

我看过很多讨论说放弃Jettison并与杰克逊合作,但现在这不是我的选择。

谢谢!

0 个答案:

没有答案