[英]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.