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 }
时间: 2024-08-30 12:25:09

Gson整合Volley返回对象--GsonRequest的相关文章

springBoot 整合 swagger 展示返回对象的嵌套属性文档注释

spring boot 处理 swagger 嵌套数据展示 在开发的过程中,我们会常常使用swagger做我们的在线文档.我们会在对象的属性上使用@ApiModelProperty 等api注解,但是遇到对象嵌套的时候,如何返回一个嵌套的json文档就需要我们做一些简单的处理 如果只在对象某个属性上使用 @ApiModelProperty 并不会起作用 12345678910111213141516171819202122232425262728293031 @Data@Slf4j@Builde

【第四篇】Volley修改之GsonRequest

json解析工具类的引入,这里引用lite马天宇的解析json的工具类: public class GsonImpl extends Json { private Gson gson = new Gson(); @Override public String toJson(Object src) { return gson.toJson(src); } @Override public <T> T toObject(String json, Class<T> claxx) { re

返回对象的方法总结

//错误! //返回的是local对象,但已被销毁 const string& getDog() { string dog = string( "Budi" ); return dog; } //不推荐,应尽量避免使用new //返回申请在heap上的对象 const string& getDog() { string* dog = new string( "Budi" ); return *dog; } //ok //直接返回对象 [额外开销:经过

PHP get_class 返回对象的类名

get_class (PHP 4, PHP 5) get_class — 返回对象的类名 说明 string get_class ([ object $obj ] ) 返回对象实例 obj 所属类的名字.如果 obj 不是一个对象则返回 FALSE. Note: 在 PHP 扩展库中定义的类返回其原始定义的名字.在 PHP 4 中 get_class() 返回用户定义的类名的小写形式,但是在 PHP 5 中将返回类名定义时的名字,如同扩展库中的类名一样. Note: 自 PHP 5 起,如果在对

HQL查询——查询返回对象类型分析

关于HQL查询,我们可以结合hibernate的API文档,重点围绕org.hibernate.Query接口,分析其方法,此接口的实例对象是通过通过session.对象的creatQuery(String hql)方法得到的.我这里要分析HQL的select子句,当然要想深入HQL查询,我们就必须了解hibernate缓存的知识. 一.选择--Select子句查询返回对象的讨论 为什么只说Select子句,因为我们使用的hibernate框架是基于java语言环境下进行开发的,也就是说hibe

条款21:必须返回对象时,别妄想返回其reference

条款21:必须返回对象时,别妄想返回其reference 引用只是对象的一种别名当使用引用的时候,请确认他的另一个身份在哪? class Rational { public: Rational(int x, int y) : m_x(x), m_y(y){} //返回const是属于类型保护,friend修饰,以后条款详说 friend const Rational operator + (const Rational &lhs, const Rational &rhs) { Ration

Spring MVC返回对象JSON

@RestController 用于返回对象,会自动格式化为JSON @RequestMapping("/user2") public User2 user2(Model model){ model.addAttribute("content", hello + "(第二种)"); User2 user=new User2(); user.setId(1); user.setName("tomas"); user.setPwd

SpringMVC中通过@ResponseBody返回对象,Js中调用@ResponseBody返回值,统计剩余评论字数的js,@RequestParam默认值,@PathVariable的用法

1.SpringMVC中通过@ResponseBody返回对象,作为JQuery中的ajax返回值 package com.kuman.cartoon.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.filefilter.FalseFileFilter; import org.slf4j.Logger; import org.s

Effective C++:条款21:必须返回对象时别妄想返回其reference

(一) 一定要避免传递一些references去指向其实并不存在的对象. 看下面这个类: class Rational { public: Rational(int numerator = 0, int denominator = 1); private: int n, d; friend const Rational operator*(const Rational& lhs, const Rational& rhs); }; 这个函数不能返回引用, (二)在stack中分配local对