[英]how to parse android volley gson request to a list / collection of objects
[英]Android Volley Request Gson
希望在android開發人員網站上使用該類,該類使用Volley和Gson從url獲取和反序列化json數據以解析為數組。 我仍然是一個初學者,所以我試圖實例化該類,但不確定如何格式化參數。 試圖尋找實現,但他們似乎還使用其他API。 返回的json僅具有一個字段和值,因此類對象clazz具有一個字段。
public class GsonRequest<T> extends Request<T> {
private final Gson gson = new Gson();
private final Class<T> clazz;
private final Map<String, String> headers;
private final Listener<T> listener;
/**
* Make a GET request and return a parsed object from JSON.
*
* @param url URL of the request to make
* @param clazz Relevant class object, for Gson's reflection
* @param headers Map of request headers
*/
public GsonRequest(String url, Class<T> clazz, Map<String, String> headers,
Listener<T> listener, ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.clazz = clazz;
this.headers = headers;
this.listener = listener;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers != null ? headers : super.getHeaders();
}
@Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(
gson.fromJson(json, clazz),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}
只是希望使示例啟動並運行,因此它至少可以接收要在屏幕上顯示的數據。
首先,您需要根據預期的JSON響應定義模型類。
例如,如果您的JSON是用戶數組,那么模型類將如下所示,
用戶Java
public class Users extends Object implements Serializable {
private static final long serialVersionUID = 1L;
@SerializedName("users")
private ArrayList<User> arrListUser;
public ArrayList<User> getArrListBusinessObj() {
return arrListUser;
}
public static class User extends Object implements Serializable
{
private static final long serialVersionUID = 1L;
private String user_id;
private String name;
private String artwork;
public String getBusinessObjId() {
return user_id;
}
public String getName() {
return name;
}
public String getArtwork() {
return artwork;
}
}
}
然后在收到網絡響應的地方,調用以下方法:
Users users = (Users)gson.fromJson(data, Users.class); //data is string form response from server
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.