java - Gson 在 "$Types.resolve"上溢出并出现 StackOverflow 异常

标签 java android json arraylist gson

我有一个 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/

相关文章:

java - Google App Engine - 任务队列名称和事务

java - 无法部署 .war Tomcat

json - 从 golang 中的 json 文件中读取 slice

c# - 在 C# 中从 POST 请求中读取和解析 JSON 数据

java - 直接从 Java 类和 GSON 生成笨拙的 JSON 数据模型

java - 类(class)倒数计时器不会重置

java - 在 for 循环中的操作之间交替

android - 在 Android 模拟器中访问安全站点

android - 将 webRTC 视频通过 RTMP 发送到服务器进行直播?

android - 在 Android 中绘制叠加层(系统范围)