zoukankan      html  css  js  c++  java
  • Gson整合Volley返回对象--GsonRequest

    Gson是一个使用映射支持JSON与Java对象之间相互转换的库文件。你可以定义和JSON keys相对应名称的Java对象。把对象传递给传递Gson,然后Gson会帮你为对象填充字段值。 下面是一个完整的示例:演示了使用Gson解析Volley数据:

     1 public class GsonRequest<T> extends Request<T> {
     2     private final Gson gson = new Gson();
     3     private final Class<T> clazz;
     4     private final Map<String, String> headers;
     5     private final Listener<T> listener;
     6 
     7     /**
     8      * Make a GET request and return a parsed object from JSON.
     9      *
    10      * @param url URL of the request to make
    11      * @param clazz Relevant class object, for Gson's reflection
    12      * @param headers Map of request headers
    13      */
    14     public GsonRequest(String url, Class<T> clazz, Map<String, String> headers,
    15             Listener<T> listener, ErrorListener errorListener) {
    16         super(Method.GET, url, errorListener);
    17         this.clazz = clazz;
    18         this.headers = headers;
    19         this.listener = listener;
    20     }
    21 
    22     @Override
    23     public Map<String, String> getHeaders() throws AuthFailureError {
    24         return headers != null ? headers : super.getHeaders();
    25     }
    26 
    27     @Override
    28     protected void deliverResponse(T response) {
    29         listener.onResponse(response);
    30     }
    31 
    32     @Override
    33     protected Response<T> parseNetworkResponse(NetworkResponse response) {
    34         try {
    35             String json = new String(
    36                     response.data,
    37                     HttpHeaderParser.parseCharset(response.headers));
    38             return Response.success(
    39                     gson.fromJson(json, clazz),
    40                     HttpHeaderParser.parseCacheHeaders(response));
    41         } catch (UnsupportedEncodingException e) {
    42             return Response.error(new ParseError(e));
    43         } catch (JsonSyntaxException e) {
    44             return Response.error(new ParseError(e));
    45         }
    46     }
    47 }
  • 相关阅读:
    Java学习笔记-函数
    Java学习笔记-数组
    Git 常用命令速查表
    $.fn与$.fx什么意思; $.extend与$.fn.extend用法区别; $(function(){})和(function(){})(jQuery)
    offsetWidth的bug
    jQuery对象和DOM对象转换,解决jQuery对象不能使用js方法的问题
    1
    $().ready()与window.onload的不同
    offsetHeight在不同的浏览器下取值不同
    getElementsByName兼容ie 但并不是兼容ie下的所有标签
  • 原文地址:https://www.cnblogs.com/summers/p/4401956.html
Copyright © 2011-2022 走看看