2016-11-15 2 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) 

I не может изменить этот список, поэтому мне нужен правильный способ его преобразования.

Любой наконечник будет высоко оценен

EDIT: Добавлена ​​ссылка Item Class (vaadin.com/api/com/vaadin/data/Item.html)

EDIT2: Добавлена ​​полная StackTrace/

+0

Показать класс «Предмет», пожалуйста, –

+0

. Вы можете увидеть класс предметов здесь: https://vaadin.com/api/com/vaadin/data/Item.html –

+0

Stackoverflow обычно возникает, когда вы думаете, что объект содержит поэтому, так как я не знаю, какой экземпляр объекта Item выглядит, трудно сказать. –

ответ

0

Причина для Stackoverflow может быть из-за рекурсивных отображений в вашем . Номер класс. Один из способов исправить это - перечислить список EquipmentData и установить возвращаемый объект (DTO), а затем преобразовать DTO с использованием GSON.

+0

Как сохранить этот временный объект? Я думаю, что я не смогу применить свой объект к объекту –

+0

. Опубликуйте свой класс 'Item' –

+0

Это RowItem из Vaadin: https://vaadin.com/api/7.7.3 /com/vaadin/data/util/sqlcontainer/RowItem.html –

1

Iterate каждый элемент списка и добавить его в объект JSON , См. Ответ this.

+0

, пожалуйста, опишите суть прилагаемого ответа. В противном случае ваш ответ появится в очереди проверки низкого качества сообщений и, вероятно, будет удален. – xenteros

Смежные вопросы