Java 带有改装库的nullPointerException

Java 带有改装库的nullPointerException,java,android,retrofit2,Java,Android,Retrofit2,我正在使用改型来访问API,但我无法获取此API的数据 我能够使我的代码与这个API一起工作:(),但是当我重做代码以使用前一个API时,我在用于显示结果的第一行的ActivityMain中得到了nullPointer错误 代码: main活动: 公共类MainActivity扩展了AppCompatActivity{ @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setConte

我正在使用改型来访问API,但我无法获取此API的数据

我能够使我的代码与这个API一起工作:(),但是当我重做代码以使用前一个API时,我在用于显示结果的第一行的ActivityMain中得到了nullPointer错误

代码:

main活动:
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
改装改装=新改装.Builder()
.baseUrl(UdacityService.BASE\u URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
UdacityService服务=改装.create(UdacityService.class);
调用requestCatalog=service.listCatalog();
requestCatalog.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
Log.e(“ERRO”、“ERRO no servidor”(“+response.code()+”));
}
否则{
CharacterCatalog=response.body();
对于(结果c:catalog.results){
Log.i(“RESULT”,String.format(“id;%s,名称:%s\n”,c.id,c.name));
对于(原点o:c原点){
Log.i(“RESULT”,String.format(“nome;%s,url:%s\n”,o.name,o.url));
}
Log.i(“结果”、“//////////”;
}
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(“ERRO”,“Verique a conexão com a internet”(“+t.getMessage()+”);
}
});
}}
接口重新设置:
公共接口服务{
公共静态最终字符串BASE_URL=”https://rickandmortyapi.com/api/";
@获取(“字符”)
调用listCatalog();
}
列出结果:

public class CharacterCatalog {
public List<Result> results;
}
公共类CharacterCatalog{
公开名单结果;
}
班级成绩

public class Result {
public String id;
public String name;
public String status;
public String species;
public String gender;

public List<Origin> origins;
}
公共类结果{
公共字符串id;
公共字符串名称;
公共字符串状态;
公共弦种;
社会性别;
公开名单来源;
}
类别来源:

public class Result {
public String id;
public String name;
public String status;
public String species;
public String gender;

public List<Origin> origins;
}
公共类结果{
公共字符串id;
公共字符串名称;
公共字符串状态;
公共弦种;
社会性别;
公开名单来源;
}

有人能帮我解决这个错误吗?

请确认您已经为您的数据类使用了这种格式

@SerializedName("id")
private Integer id;
@SerializedName("name")
private String name;
@SerializedName("status")
private String status;
@SerializedName("species")
private String species;
@SerializedName("type")
private String type;
@SerializedName("gender")
private String gender;
@SerializedName("origin")
private Origin origin;
@SerializedName("location")
private Location location;
@SerializedName("image")
private String image;
@SerializedName("episode")
private List<String> episode = null;
@SerializedName("url")
private String url;
@SerializedName("created")
private String created;
@SerializedName(“id”)
私有整数id;
@序列化名称(“名称”)
私有字符串名称;
@序列化名称(“状态”)
私有字符串状态;
@序列化名称(“物种”)
私有串种;
@序列化名称(“类型”)
私有字符串类型;
@序列化名称(“性别”)
私人字符串性别;
@序列化名称(“源”)
私人出身;
@序列化名称(“位置”)
私人位置;
@序列化名称(“图像”)
私有字符串图像;
@序列化名称(“插曲”)
私有列表事件=null;
@序列化名称(“url”)
私有字符串url;
@SerializedName(“已创建”)
创建私有字符串;
检查此URL以创建POJO:
请确保您确实连接到了服务器,并确认您从服务器得到了200个答案

谢谢各位的帮助,但我解决了问题。。。在我的类结果中,我使用了一个源列表,但API只返回一个对象。。。我只删除了列表类型。

@Expose
不是必需的;但是添加
@SerializedName
应该可以使映射工作。
@SerializedName("id")
private Integer id;
@SerializedName("name")
private String name;
@SerializedName("status")
private String status;
@SerializedName("species")
private String species;
@SerializedName("type")
private String type;
@SerializedName("gender")
private String gender;
@SerializedName("origin")
private Origin origin;
@SerializedName("location")
private Location location;
@SerializedName("image")
private String image;
@SerializedName("episode")
private List<String> episode = null;
@SerializedName("url")
private String url;
@SerializedName("created")
private String created;