gpt4 book ai didi

java - Android - GsonRequest 返回 null

转载 作者:行者123 更新时间:2023-11-29 21:17:02 25 4
gpt4 key购买 nike

我这里有一个 ListFragment,它使用一个 url 来使用 GSON 库解析 JSON。后台任务截击:

public class LatestFragment extends ListFragment {

public LatestFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.fragment_latest, container,
false);

return rootView;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

arrItemList = new ArrayList<ItemListModel>();
va = new LatestAdapter(getActivity(), arrItemList);

loadItemList(1);
}

private void loadItemList(int page) {
mRequestQueue = Volley.newRequestQueue(getActivity());
pd = ProgressDialog.show(getActivity(), null, "Loading...");

// TODO use Volley param
currentPage = page;
param = "?page=" + currentPage;

String url = Constants.LATEST_ITEM_LIST + param;

GsonRequest<ItemListModel> myReq = new GsonRequest<ItemListModel>(
Method.GET, url, ItemListModel.class,
createMyReqSuccessListener(), createMyReqErrorListener());

mRequestQueue.add(myReq);

}


private Response.Listener<ItemListModel> createMyReqSuccessListener() {
return new Response.Listener<ItemListModel>() {
@Override
public void onResponse(ItemListModel response) {
try {
Log.d("response > ", response.toString());
pd.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
};
};
}

private Response.ErrorListener createMyReqErrorListener() {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
};
}
}

当我运行应用程序时,它显示responsenull

这是ItemListModel:

public class ItemListModel {

private String user_id;
private String item_id;
private String name;
private String price;
private String category;
private ThumbnailModel thumbnail; // not array list

public ItemListModel(){}

//getters

@Override
public String toString() {
return "ItemListModel [user_id=" + user_id + ", item_id=" + item_id
+ ", name=" + name + ", price=" + price + ", category="
+ category + ", thumbnail=" + thumbnail + "]";
} // ALL NULL
}

反序列化这个 JSON 格式:

{
"results": [
{
"user_id": "1",
"item_id": "18630",
"name": "Unnamed Item",
"price": "0",
"description": "",
"created_at": "2014-01-16 15:31:36",
"thumbnail": {
"image50": "http://www.example.com/adsa.jpg",
"image100": "hhttp://www.example.com/adsa.jpg"
},...

这次我做错了什么?我应该坚持使用 Volley 的 JSONArrayRequest 吗?嗯。

最佳答案

您为 Json 响应创建的模型有问题。

{
"results": [
{
"user_id": "1",
"item_id": "18630",
"name": "Unnamed Item",
"price": "0",
"description": "",
"created_at": "2014-01-16 15:31:36",
"thumbnail": {
"image50": "http://www.example.com/adsa.jpg",
"image100": "hhttp://www.example.com/adsa.jpg"
},...

像这样尝试上面的 Json 响应

 public class ItemListModel {
public ArrayList<Result> results;

@Override
public String toString() {
return "Response [results=" + results + "]";
}

public ArrayList<Result> getResults() {
return results;
}

}

然后

    public class Result {

private String user_id;
private String item_id;
private String name;
private String price;
private String description;
private String created_at;
private ThumbnailModel thumbnail;
public String getUser_id() {
return user_id;
}

public String getItem_id() {
return item_id;
}

public String getName() {
return name;
}

public String getPrice() {
return price;
}

public String getDescription() {
return description;
}

public String getCreated_at() {
return created_at;
}

public ThumbnailModel getThumbnail() {
return thumbnail;
}

@Override
public String toString() {
return "Result [user_id=" + user_id + ", item_id=" + item_id
+ ", name=" + name + ", price=" + price + ", description="
+ description + ", created_at=" + created_at + ", thumbnail="
+ thumbnail + "]";
}

}

最后

public class ThumbnailModel {
private String image50;
private String image100;
public String getImage50() {
return image50;
}
public String getImage100() {
return image100;
}
@Override
public String toString() {
return "ThumbnailModel [image50=" + image50 + ", image100=" + image100
+ "]";
}

这是上述 Json 的正确模型。

编辑:-

private Response.Listener<ItemListModel> createMyReqSuccessListener() {
return new Response.Listener<ItemListModel>() {
@Override
public void onResponse(ItemListModel response) {
try {
Log.d("Name> ", response.getResults().get(0).getName());//Edited
Log.d("ThumbnailModel Image> ", response.getResults().get(0).getThumbnail().getImage100());//Edited
pd.dismiss();
} catch (Exception e) {
e.printStackTrace();
}
};
};
}

希望这对你有用。

关于java - Android - GsonRequest 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21158432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com