我有一个 ArrayList 和一个 ArrayList,gson 在检索自定义对象 ArrayList 时工作得很好,但在检索 LinearLayout ArrayList 时导致 stackOverflow 异常。
代码:
public Semester(JSONObject json) throws JSONException {
coursesAsString = json.getString(JSON_COURSES);
Type coursesType = new TypeToken<ArrayList<Course>>(){}.
courses = gson.fromJson(coursesAsString, // <--- THIS PART WORKS FINE
courseLayoutArrayAsString = json.getString(JSON_COURSELAYOUTARRAY);
Type courseLayoutArrayType = new TypeToken<ArrayList<LinearLayout>>(){}.getType();
courseLayoutArray = gson.fromJson(courseLayoutArrayAsString, courseLayoutArrayType); // <---- this line
//is where the problem lies. For some reason
//"gson.fromJson(courseLayoutArrayAsString, courseLayoutArrayType)" causes a stackOverflow exception.
}
异常(exception)情况:
java.lang.StackOverflowError
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:375)
at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:380)
而且这样持续了很长时间。
最佳答案
您正在尝试序列化 LinearLayouts?这是非常糟糕的做法。
您应该在这些 LinearLayout 中序列化您需要的数据,并在数据反序列化时重新创建 LinearLayout。
关于java - Gson 在 "$Types.resolve"上溢出并出现 StackOverflow 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252240/