java - 无法使用Retrofit和GSON解析JSON - Thinbug

标签 java json retrofit

我在尝试让 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/

相关文章:

java - 如何在 Django RESTful API 上解决 Retrofit @POST 上的 404?

java - JVM 在并行处理方面有多好?我什么时候应该创建自己的线程和可运行对象?为什么线程会干扰?

java - 消息负载的类型为 : BufferInputStream

java.lang.IllegalStateException : Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2

javascript - 将 Javascript 对象转换为 JSON 的 jQuery 方法是什么?

java - JSONObject 无法转换为 JSONArray、SimpleJSON

android - Robolectric 和 Retrofit - 等待响应

java - 将 SOAP 消息转换为 Java 对象

java - LWJGL绘图时如何选择图像的区域?

java - 将 Servlet 用于非 servlet 应用程序