【问题标题】:Gson serialized name: "Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor"Gson 序列化名称:“隐式超级构造函数 Object() 未定义默认构造函数。必须定义显式构造函数”
【发布时间】:2013-01-22 19:20:00
【问题描述】:

我是 Android 新手,我正在尝试学习如何使用 Gson 来解析 API 调用。我已经阅读了一些内容,并且正在尝试遵循以下示例:http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

进展比较顺利,但是当我将项目导入 Eclipse 以更好地查看代码时,我遇到了上面关于构造函数的错误(以及一些其他令人困惑的错误)。

我在 StackOverflow 上阅读了一些相关的问题,但它们都涉及继承的类,而且,我可能非常困惑,但我不认为这个类是继承的。

是什么导致了这些错误,我该如何解决?

如果您想在不深入阅读文章的情况下获得项目的链接,可以在此处获得:http://dl.dropbox.com/u/7215751/JavaCodeGeeks/AndroidJsonParsingTutorial/AndroidJsonProject.zip

以下是相关文件中的代码: 包com.javacodegeeks.android.json.model;

import com.google.gson.annotations.SerializedName;

public class SearchResponse {

public List<Result> results;

@SerializedName("max_id")
public long maxId;

@SerializedName("since_id")
public int sinceId;

@SerializedName("refresh_url")
public String refreshUrl;

@SerializedName("next_page")
public String nextPage;

@SerializedName("results_per_page")
public int resultsPerPage;

public int page;

@SerializedName("completed_in")
public double completedIn;

@SerializedName("since_id_str")
public String sinceIdStr;

@SerializedName("max_id_str")
public String maxIdStr;

public String query;

}

提前致谢。

【问题讨论】:

  • 你需要包含从Employee扩展的任何类。
  • 对不起,一开始我被你提到Employee 课程弄糊涂了,因为我从来没有见过与这个项目相关的课程。然后我意识到,不小心从我正在查看的相关问题中复制错误消息是我的错。对于给您带来的不便,我深表歉意,并且我已经编辑了问题以反映实际的错误消息。你现在有什么想法?
  • 一个奇怪的错误信息。尝试将默认构造函数添加到您的 bean (SearchResponse)。
  • 好吧,我想通了!事实证明,这不是构造函数问题,而是与导入项目有关。在搜索 StackOverflow 几个小时后,我尝试了这个解决方案,它奏效了:1)右键单击有问题的项目并选择属性 2)选择适当的 Android 版本(1.1、1.5 或 1.5 与 google api)并说好3)再次右键单击项目并选择“Android工具>修复项目属性”修复一次导入(如果需要)4)刷新项目,您应该准备好无需任何手动编辑

标签: java android eclipse gson eclipse-adt


【解决方案1】:

您的研究是正确的 - 提到的错误与构造函数和继承有关。 似乎在您的项目中的某个地方,您有一个 Employee 类,并且该类没有声明公共(或至少受保护的)空构造函数(即不带参数的构造函数)。

在提供的示例代码中,我找不到任何关于此类的提及 - 也许是您添加的用于试验的东西?

在任何情况下,向提到的 Employee 类添加一个 null 构造函数应该可以解决您的一些问题。

【讨论】:

  • 对不起,demaniak,起初我对你提到Employee 课程感到困惑,因为我从未见过与这个项目相关的课程。然后我意识到,不小心从我正在查看的相关问题中复制错误消息是我的错。对于给您带来的不便,我深表歉意,并且我已经编辑了问题以反映实际的错误消息。你现在有什么想法?
  • 啊!好的,所以我在上面看到您找到了解决方案!本质上,您的整个运行时都丢失了,因此找不到所有“对象”的根。因此出现错误消息。但很高兴您找到了解决方案!祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 2010-11-14
  • 1970-01-01
  • 2014-06-17
  • 2020-09-29
  • 2014-11-06
  • 2023-04-08
相关资源
最近更新 更多