Json 数组和改造
Json array and retrofit
我有这样的 json 回复:
{
error: false
stats: {
punti: 150
punti2: 200
}-
}
我创建了一个 StatsReceiver class:
public class StatsReceiver {
Boolean error;
Stats stat;
public Boolean isError() {
if (error == null)
return true;
else
return error;
}
public int getPunti() {
if (stat == null)
return -1;
else
return stat.getPunti();
}
private class Stats {
private int punti = 0;
public int getPunti() {
return punti;
}
public void setPunti(int punti) {
this.punti = punti;
}
public int getPunti2() {
return punti2;
}
public void setPunti2(int punti2) {
this.punti2 = punti2;
}
private int punti2 = 0;
public Stats(int punti, int punti2) {
this.punti = punti;
this.punti2 = punti2;
}
}
}
下一个:
@GET("/v1/stats")
void stats(@Header("Auth") String code,
Callback<StatsReceiver> object);
现在当我这样做时:
apiServiceUsers.stats(apiKey, new Callback<StatsReceiver>() {
@Override
public void success(StatsReceiver statsReceiver, Response response) {
if (statsReceiver.isError()) {
Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, statsReceiver.getPunti(), Toast.LENGTH_LONG).show();
}
}
错误是 false 正如预期的那样,但是 getPunti() return 总是 -1,所以 stat 对象总是 空.
怎么了?
P.S在日志控制台中,有:
{"error":false,"stats":{"punti":150,"punti2":200}}
在您的 JSON 示例中,密钥是 stats
;但是在你的 Java class 中,成员变量被称为 stat
。要使 Gson 工作,这些必须完全相同,或者您必须使用 @SerializedName
告诉 Gson 哪个 JSON 键对应于哪个变量:
@SerializedName("stats")
Stats statOrSomethingElseEntirely;
我有这样的 json 回复:
{
error: false
stats: {
punti: 150
punti2: 200
}-
}
我创建了一个 StatsReceiver class:
public class StatsReceiver {
Boolean error;
Stats stat;
public Boolean isError() {
if (error == null)
return true;
else
return error;
}
public int getPunti() {
if (stat == null)
return -1;
else
return stat.getPunti();
}
private class Stats {
private int punti = 0;
public int getPunti() {
return punti;
}
public void setPunti(int punti) {
this.punti = punti;
}
public int getPunti2() {
return punti2;
}
public void setPunti2(int punti2) {
this.punti2 = punti2;
}
private int punti2 = 0;
public Stats(int punti, int punti2) {
this.punti = punti;
this.punti2 = punti2;
}
}
}
下一个:
@GET("/v1/stats")
void stats(@Header("Auth") String code,
Callback<StatsReceiver> object);
现在当我这样做时:
apiServiceUsers.stats(apiKey, new Callback<StatsReceiver>() {
@Override
public void success(StatsReceiver statsReceiver, Response response) {
if (statsReceiver.isError()) {
Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, statsReceiver.getPunti(), Toast.LENGTH_LONG).show();
}
}
错误是 false 正如预期的那样,但是 getPunti() return 总是 -1,所以 stat 对象总是 空.
怎么了?
P.S在日志控制台中,有:
{"error":false,"stats":{"punti":150,"punti2":200}}
在您的 JSON 示例中,密钥是 stats
;但是在你的 Java class 中,成员变量被称为 stat
。要使 Gson 工作,这些必须完全相同,或者您必须使用 @SerializedName
告诉 Gson 哪个 JSON 键对应于哪个变量:
@SerializedName("stats")
Stats statOrSomethingElseEntirely;