0
我需要將Java對象轉換爲JSON字符串。 這裏是我使用的例子代碼:使用XStream對象到JSON
public class XstreamTest {
public static void main(String[] args) throws Exception {
Order order = new Order();
order.id = 1;
order.products = new ArrayList<Product>();
Product prod1 = new Product();
prod1.barCode = "4821111111111";
Product prod2 = new Product();
prod2.barCode = "4821111111112";
order.products.add(prod1);
order.products.add(prod2);
System.out.println(toJson(order));
}
public static String toJson(Object document) throws Exception {
XStream xstream = new XStream(new JettisonMappedXmlDriver() {
public HierarchicalStreamWriter createWriter(Writer writer) {
return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
}
});
xstream.autodetectAnnotations(true);
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias(document.getClass().getSimpleName(),
document.getClass());
return xstream.toXML(document);
}
}
@XStreamAlias("ORDER")
class Order {
@XStreamAlias("NUMBER")
public int id;
@XStreamAlias("PRODUCT")
@XStreamImplicit(itemFieldName="PRODUCT")
public List<Product> products;
}
class Product {
@XStreamAlias("BARCODE")
public String barCode;
}
運行後,我的結果:
{
"NUMBER": 1,
"PRODUCT": {
"BARCODE": "4821111111111"
},
"PRODUCT": {
"BARCODE": "4821111111112"
}
}
我檢查http://www.jslint.com/ JSON和得到錯誤:重複的「產品」。
請幫忙!我做錯了什麼?或者可能是XStream中的錯誤?
我最初的任務是:獲取XML->轉換爲Object->檢查這個Objects->將數據庫中的對象保存爲JSON數據。我認爲XStream可以處理這個......可能是:) – smie
當我刪除@XStreamImplicit(itemFieldName =「PRODUCT」)時,我無法將XML轉換爲Object – smie
@smie你會在你的問題中包含它嗎? – Katona