我正在解析来自this URL的JSON数据。这样打电话:
call.enqueue(new Callback<List<Gift>>() {
@Override
public void onResponse(Call<List<Gift>> call, Response<List<Gift>> response) {
List<Gift> places = response.body();
}
}
但我不想要这个。我想首先检查flag
是否为0
。如果是,那么我想只获取list
键的值。并且想要使用以下模型:
class Gift extends RealmObject{
String code, name;
//getters & setters
}
我怎样才能做到这一点? 任何帮助都非常感谢。
答案 0 :(得分:1)
试试这种方式
class GiftList{
String flag;
String flag1;
List<Gift> gifts;
}
call.enqueue(new Callback<List<GiftList>>() {
@Override
public void onResponse(Call<List<GiftList>> call, Response<List<GiftList>> response) {
List<GiftList> places = response.body();
if(places.getFlag().equals("0"){
List<Gift> gifts=places.getList();
}
}
答案 1 :(得分:1)
您可以创建另一个POJO来存储您的Gift
类,该类存储外部值,如flag
和flag1
,然后您可以访问flag
以确定您是否将进入list
这是它的样子:
class GiftResponse extends RealmObject{
int flag;
String flag1;
Gift[] list;
//getters & setters
}
并按原样保留Gift
课程,然后您可以获得以下数据:
call.enqueue(new Callback<GiftResponse>() {
@Override
public void onResponse(Call<GiftResponse> call, Response<GiftResponse> response) {
GiftResponse res = response.body();
if(res.getFlag() == 0) {
Gift[] arrGifts = res.getList();
}
}
}
使用此方法,您可以更改呼叫响应类型。
答案 2 :(得分:0)
您可以创建ResponseWrapper类,如下所示:
public class ResponseWrapper<T> {
private T data;
@JsonProperty("flag")
public int flag;
@JsonProperty("flag1")
public String flag1;
public T getData() {
return data;
}
}
并修改您的callback
call.enqueue(new Callback<ResponseWrapper<List<Gift>>>() {
@Override
public void onResponse(Call<ResponseWrapper<List<Gift>>> call, Response<ResponseWrapper<List<Gift>>> response) {
int flag = response.body().flag;
List<Gift> places = response.body().getData();
}
}