The*_*ter 1 java android json arraylist gson
我有一个ArrayList和一个ArrayList,并且在检索自定义对象ArrayList时gson工作正常,但在检索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.
}
Run Code Online (Sandbox Code Playgroud)
这是一个例外:
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)
Run Code Online (Sandbox Code Playgroud)
它长期以来一直在这样下去.
您正在尝试序列化LinearLayouts?这是非常糟糕的做法.
您应该在这些LinearLayouts中序列化所需的数据,并在反序列化数据时重新创建LinearLayout.