我在尝试让 Retrofit 解析我的 JSON 时遇到了很多麻烦,我无法理解。每当我运行 Retrofit 代码时,我都会崩溃:
Caused by: java.lang.StackOverflowError: stack size 1036KB
at com.google.gson.internal.$Gson$Types$WildcardTypeImpl.<init>($Gson$Types.java:537)
然后是:
E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!!
我的 JSON 如下所示:
{
"199" : {
"anncontent" : "content",
"anndisplaydate" : "Tuesday February 11",
"announcements_id" : "199",
"anntitle" : "Newsletter Issue 17"
},
"264" : {
"anncontent" : "content",
"anndate" : "2014-10-03 22:37:32",
"anndisplaydate" : "Friday October 03",
"announcements_id" : "264",
"anntitle" : "Timetable"
},
"267" : {
"anncontent" : "content",
"anndate" : "2014-10-10 02:41:32",
"anndisplaydate" : "Friday October 10",
"announcements_id" : "267",
"anntitle" : "Author talk with Hugh O’Brien"
}
}
我的公告类字段如下所示:
private String anntitle;
private String anncontent;
private String anndisplaydate;
private Date anndate;
private String announcements_id;
我的界面如下所示:
public interface AnnouncementsAPI {
@GET("/announcements.json")
ArrayList<Announcement> listAnnouncements();}
最后,我的 Retrofit 代码如下所示:
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://MYURL")
.build();
AnnouncementsAPI announcementsAPI = restAdapter.create(AnnouncementsAPI.class);
ArrayList<Announcement> announcements = announcementsAPI.listAnnouncements();
Log.d("RETROFIT", "Announcemnts: " + announcements.toString());
我只是想获取Announcement对象的ArrayList,但我不知道如何去做。抱歉,如果之前有人问过这个问题,但我发现之前所有的问题/示例都使用了 JSON,这似乎与我的完全不同。
如果有人有任何想法,我们将不胜感激。 谢谢
最佳答案
如果所有对象都扩展相同的基础对象,则会发生 StackOverflowError: stack size 1036KB 异常。
示例:
BaseBean 类
A 类扩展了 BaseBean
(A 类
包含A 类
和B 类
的引用)
B 类扩展了 BaseBean
C 类扩展了 BaseBean
实现上述情况,发生相同异常的可能性很大。 (不要使用 BaseBean 扩展)。
关于java - 无法使用Retrofit和GSON解析JSON - Thinbug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30892383/