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 }
  • 相关阅读:
    spring与springmvc父子容器
    spring容器BeanFactory简单例子
    spring整体架构
    css中".",",",“~”和“>”符号的意义
    CSS中的块级元素与行级元素
    java反射和动态代理
    thymeleaf的fragment例子
    编写一个简单的 JDBC 程序
    http://localhost/ 或 http://127.0.0.1/ 报错:HTTP 404 的解决办法
    教你如何清除 MyEclipse/Eclipse 中 Web Browser 和 Switch Workspace 的历史记录
  • 原文地址:https://www.cnblogs.com/summers/p/4401956.html
Copyright © 2011-2022 走看看