2016-11-15 54 views
0

我有像下面的列表,轉換列表<Item>到JSON

List<Item> EquipmentData = SAPEquipment.getByFilter(filter); 

這產品我是從SAP(「com.vaadin.data.util.sqlcontainer.RowItem」)

得到結果

我的問題是,我需要將該列表轉換爲Json格式。我一直在閱讀一些例子,使用GSON這樣的嘗試:

Gson gson = new Gson(); 
gson.toJson(EquipmentData); 

也試圖與只有一個項目

gson.toJson(EquipmentData.get(0)); 

報告的錯誤是以下之一:

java.lang.StackOverflowError 
com.google.gson.stream.JsonWriter.string(JsonWriter.java:559) 
com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:402) 
com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:307) 
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:214) 
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) 
com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:208) 
com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.write(MapTypeAdapterFactory.java:145) 
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) 
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:99) 
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:219) 
com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) 
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:99) 
com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:219) 
com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:899) 

我無法修改該列表,所以我需要一個適當的方式來轉換它。

任何提示,將不勝感激

編輯:添加項類鏈路(vaadin.com/api/com/vaadin/data/Item.html

EDIT2:增加全堆棧跟蹤/

+0

顯示'Item'類,請 –

+0

您可以在此處看到Item Class:https://vaadin.com/api/com/vaadin/data/Item.html –

+0

當您有Gson認爲對象包含時,通常會出現Stackoverflow本身,所以既然我不知道你的Item對象是什麼樣子,很難說 –

回答

0

0123'的原因可能是因爲您的項目類中的遞歸映射。解決此問題的一種方法是遍歷EquipmentData列表並設置返回對象(DTO),然後使用GSON轉換DTO

+0

我應該如何存儲臨時對象?我想我將無法將我的物品投放到對象 –

+0

請發佈您的「Item」類 –

+0

這是來自Vaadin的一個RowItem:https://vaadin.com/api/7.7.3 /com/vaadin/data/util/sqlcontainer/RowItem.html –

1

迭代列表中的每個項,並將其添加到JSON對象。請參考this的答案。

+0

請描述附加答案的本質。否則,您的答案將顯示在低質量帖子審閱隊列中,並可能會被刪除。 – xenteros