簡體   English   中英

Android Volley請求Gson

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM