繁体   English   中英

转换清单 <Item> 到json

[英]Convert List<Item> to json

我有一个类似以下的列表,

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

该项目是我从SAP获得的结果(“ com.vaadin.data.util.sqlcontainer.RowItem”)

我的问题是我需要将该List转换为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:添加了完整的stacktrace /

迭代列表中的每个项目,并将其添加到JSON对象中。 请参阅答案。

Stackoverflow的原因可能是由于Item类中的递归映射。 解决此问题的一种方法是遍历EquipmentData列表并设置返回对象( DTO ),然后使用GSON转换DTO

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM