Java Jettison JSON パッケージに実際の問題があります。何らかの理由で、長さ 1 のリストと長さ > 1 のリストの異なる表現を取得しています。
次の例では、長さ 1 (list1) と長さ 2 (list2) の 2 つのリストを作成していることがわかります。
@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 を捨てて、Jackson と一緒に仕事をしようという議論をたくさん見てきましたが、今の私には選択肢がありません。
ありがとう!