retrofit2 嵌入式列表在有效响应时返回 null
retrofit2 embedded list returning null on valid reponse
我有一个 json request/response 对,我想在 android 中使用 retrofit2。请求工作正常,我得到了此处显示的响应,我通过向项目添加日志记录对其进行了验证。
前两个字段返回到我的回调正常,但 "result" 数组始终为空。
发送:
{"jsonrpc": "2.0", "method": "Player.GetActivePlayers", "id": 1}
回来:
{"id":1,"jsonrpc":"2.0","result":[{"playerid":0,"playertype":"internal","type":"audio"}]}
我使用网站 jsonschema2pojo 生成了以下 POJO 类
package retroKodi;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class player_GetActivePlayersReturn_root {
@SerializedName("id")
@Expose
private int id;
@SerializedName("jsonrpc")
@Expose
private String jsonrpc;
@SerializedName("playerGetActivePlayersResult")
@Expose
private List<player_GetActivePlayersReturn_Result> playerGetActivePlayersResult = null;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getJsonrpc() {
return jsonrpc;
}
public void setJsonrpc(String jsonrpc) {
this.jsonrpc = jsonrpc;
}
public List<player_GetActivePlayersReturn_Result> getPlayerGetActivePlayersResult() {
return playerGetActivePlayersResult;
}
public void setPlayerGetActivePlayersResult(List<player_GetActivePlayersReturn_Result> playerGetActivePlayersResult) {
this.playerGetActivePlayersResult = playerGetActivePlayersResult;
}
}
子列表
package retroKodi;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class player_GetActivePlayersReturn_Result {
@SerializedName("playerid")
@Expose
private int playerid;
@SerializedName("playertype")
@Expose
private String playertype;
@SerializedName("type")
@Expose
private String type;
public int getPlayerid() {
return playerid;
}
public void setPlayerid(int playerid) {
this.playerid = playerid;
}
public String getPlayertype() {
return playertype;
}
public void setPlayertype(String playertype) {
this.playertype = playertype;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
Activity 通话
kodiRequest_nullParams thisRequest = new kodiRequest_nullParams("2.0", "Player.GetActivePlayers", 15);
(ApiUtilKodi.sendPost().kodiPlayer_GetActivePlayers(thisRequest)).enqueue(new Callback<player_GetActivePlayersReturn_root>() {
@Override
public void onResponse(Call<player_GetActivePlayersReturn_root> call, Response<player_GetActivePlayersReturn_root> response) {
player_GetActivePlayersReturn_root thisResponse = response.body();
String hi = "hi";
//List<player_GetActivePlayersReturn_root.playerGetActivePlayersResult> thisResultList = thisResponse.getPlayerGetActivePlayersResult();
}
@Override
public void onFailure(Call<player_GetActivePlayersReturn_root> call, Throwable t) {
Log.d("response", t.getStackTrace().toString());
}
});
在 "thisResponse" 字段中,"playerGetActivePlayersResult" 字段显示为空。
我原以为它会显示一个数组,或者至少是一个指针,然后我可以将其分配给一个列表。
我到底错过了什么???? None 我能找到的示例中有一个列表作为响应的一部分。它们要么都是简单的 1 级 json 模式,要么就是假设了一个简单模式列表。
在classplayer_GetActivePlayersReturn_root
变化
@SerializedName("playerGetActivePlayersResult")
@Expose
private List<player_GetActivePlayersReturn_Result> playerGetActivePlayersResult = null;
和
@SerializedName("result")
@Expose
private List<player_GetActivePlayersReturn_Result> result = null;
我有一个 json request/response 对,我想在 android 中使用 retrofit2。请求工作正常,我得到了此处显示的响应,我通过向项目添加日志记录对其进行了验证。
前两个字段返回到我的回调正常,但 "result" 数组始终为空。
发送:
{"jsonrpc": "2.0", "method": "Player.GetActivePlayers", "id": 1}
回来:
{"id":1,"jsonrpc":"2.0","result":[{"playerid":0,"playertype":"internal","type":"audio"}]}
我使用网站 jsonschema2pojo 生成了以下 POJO 类
package retroKodi;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class player_GetActivePlayersReturn_root {
@SerializedName("id")
@Expose
private int id;
@SerializedName("jsonrpc")
@Expose
private String jsonrpc;
@SerializedName("playerGetActivePlayersResult")
@Expose
private List<player_GetActivePlayersReturn_Result> playerGetActivePlayersResult = null;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getJsonrpc() {
return jsonrpc;
}
public void setJsonrpc(String jsonrpc) {
this.jsonrpc = jsonrpc;
}
public List<player_GetActivePlayersReturn_Result> getPlayerGetActivePlayersResult() {
return playerGetActivePlayersResult;
}
public void setPlayerGetActivePlayersResult(List<player_GetActivePlayersReturn_Result> playerGetActivePlayersResult) {
this.playerGetActivePlayersResult = playerGetActivePlayersResult;
}
}
子列表
package retroKodi;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class player_GetActivePlayersReturn_Result {
@SerializedName("playerid")
@Expose
private int playerid;
@SerializedName("playertype")
@Expose
private String playertype;
@SerializedName("type")
@Expose
private String type;
public int getPlayerid() {
return playerid;
}
public void setPlayerid(int playerid) {
this.playerid = playerid;
}
public String getPlayertype() {
return playertype;
}
public void setPlayertype(String playertype) {
this.playertype = playertype;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
Activity 通话
kodiRequest_nullParams thisRequest = new kodiRequest_nullParams("2.0", "Player.GetActivePlayers", 15);
(ApiUtilKodi.sendPost().kodiPlayer_GetActivePlayers(thisRequest)).enqueue(new Callback<player_GetActivePlayersReturn_root>() {
@Override
public void onResponse(Call<player_GetActivePlayersReturn_root> call, Response<player_GetActivePlayersReturn_root> response) {
player_GetActivePlayersReturn_root thisResponse = response.body();
String hi = "hi";
//List<player_GetActivePlayersReturn_root.playerGetActivePlayersResult> thisResultList = thisResponse.getPlayerGetActivePlayersResult();
}
@Override
public void onFailure(Call<player_GetActivePlayersReturn_root> call, Throwable t) {
Log.d("response", t.getStackTrace().toString());
}
});
在 "thisResponse" 字段中,"playerGetActivePlayersResult" 字段显示为空。
我原以为它会显示一个数组,或者至少是一个指针,然后我可以将其分配给一个列表。
我到底错过了什么???? None 我能找到的示例中有一个列表作为响应的一部分。它们要么都是简单的 1 级 json 模式,要么就是假设了一个简单模式列表。
在classplayer_GetActivePlayersReturn_root
变化
@SerializedName("playerGetActivePlayersResult")
@Expose
private List<player_GetActivePlayersReturn_Result> playerGetActivePlayersResult = null;
和
@SerializedName("result")
@Expose
private List<player_GetActivePlayersReturn_Result> result = null;