我对 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 解析器发疯(当然这是问题的缩小版)。
我已经看到很多讨论说要放弃 Jettison 并与杰克逊合作,但现在这不是我的选择。
谢谢!