我正在尝试使用 gson 将 json 对象转换为字符串。下面是代码
List<Student> studs = //from db
int count = studs.size();
Integer tot_pages= count/limit;
if(page>tot_pages){
page=tot_pages;
}
Integer start=limit*page-limit;
Gson gson = new Gson();
JsonObject jObj= new JsonObject();
jObj.addProperty("page", page);
jObj.addProperty("total",tot_pages);
jObj.addProperty("records",count);
JsonArray cell = new JsonArray();
JsonArray rows = new JsonArray();
JsonObject row= new JsonObject();
for(Student stud: studs){
row= new JsonObject();
row.addProperty("id", stud.getId());
cell=new JsonArray();
JsonPrimitive name = new JsonPrimitive(stud.getName());
JsonPrimitive rollno = new JsonPrimitive(stud.getRollno());
JsonPrimitive yr = new JsonPrimitive(stud.getYr());
cell.add(name);
cell.add(rollno);
cell.add(yr);
row.add("cell", row);
rows.add(row);
System.out.println(stud.getId());
}
System.out.println("done");
jObj.add("rows", rows);
System.out.println("done1");
return gson.toJson(jObj);
并得到下面的错误
原因:java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:416) 处的 java.lang.StackOverflowError 在 java.io.StringWriter.write(StringWriter.java) 处的 java.lang.StringBuffer.append(StringBuffer.java:237) :101) 在 com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:402) 在 com.google.gson.stream 的 com.google.gson.stream.JsonWriter.string(JsonWriter.java:534)。 JsonWriter.value(JsonWriter.java:495) 在 com.google.gson.internal.bind.TypeAdapters$25.write(TypeAdapters.java:686) 在 com.google.gson.internal.bind.TypeAdapters$25.write(TypeAdapters. java:704) 在 com.google.gson.internal.bind.TypeAdapters$25.write(TypeAdapters.java:704) 在 com.google.gson.internal.bind.TypeAdapters$25.write(TypeAdapters.java:704) 在 com .google.gson.internal.bind.TypeAdapters 25 美元。在 com.google.gson.internal.bind.TypeAdapters$25.write(TypeAdapters.java:704) 在 com.google.gson.internal.bind.TypeAdapters$25.write(TypeAdapters.java: 704) <-----这行重复了很多次。
请有人帮帮我。