在volley框架中有一个 protected Response<Result<T>> parseNetworkResponse(NetworkResponse response){}函数。从服务器上或者在缓存中获取的JSON字符串在这个函数进行解析。

  1. String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers, HTTP.UTF_8))
  2. Result<T> result = GsonUtil.getResult(jsonString, mTypeToken);

我们可以定义一个GsonUtil类。里面写一些Gson和JSON相互转化的功能函数。例如上用到的getResult函数。利用该函数获取的Result<T>这个JavaBean。也就是返回的规范,该规范由前端开发人员和后台开发人员商量得出。既然得到的JavaBean,那么我再要获取JSON里面的数据就像从一个类中获取一个数据一样简单了。

  1. public static <T> T getResult(String jsonData, TypeToken<T> type) {
  2. Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
  3. return (T) gson.fromJson(jsonData, type.getType());
  4. }

Result<T>类:例如:(后台返回的JSON字符串形如:{"err":"success","errno":1,"rsm{"userId":"1","email":"?","password":"?","firstName":"胡","lastName":"安","gender":"1","photo":"/picture/userPhoto/1422624411423.PNG","autograph":"","introduce":"","createTime":"4天前"}}失败返回{"err":"用户不存在!",errno":0} )

  1. package whu.cn.whushare.bean;
  2.  
  3. import com.google.gson.annotations.Expose;
  4. import com.google.gson.annotations.SerializedName;
  5.  
  6. public class Result<T> {
  7. @Expose
  8. @SerializedName("currentPage")
  9. private long currentPage;
  10. @Expose
  11. @SerializedName("pageSize")
  12. private long pageSize;
  13. @Expose
  14. @SerializedName("allDataCount")
  15. private long allDataCount;
  16. @Expose
  17. @SerializedName("nextPage")
  18. private long nextPage;
  19. @Expose
  20. @SerializedName("errno")
  21. private int code;
  22. @Expose
  23. @SerializedName("err")
  24. private String msg;
  25. private int total;
  26. @Expose
  27. @SerializedName("rsm")
  28. private T content;
  29.  
  30. public Result(T result) {
  31. this.content = result;
  32. }
  33.  
  34. public Result(int code, T result) {
  35. this.code = code;
  36. this.content = result;
  37. }
  38.  
  39. public long getCurrentPage() {
  40. return currentPage;
  41. }
  42.  
  43. public void setCurrentPage(int currentPage) {
  44. this.currentPage = currentPage;
  45. }
  46.  
  47. public long getPageSize() {
  48. return pageSize;
  49. }
  50.  
  51. public void setPageSize(int pageSize) {
  52. this.pageSize = pageSize;
  53. }
  54.  
  55. public long getAllDataCount() {
  56. return allDataCount;
  57. }
  58.  
  59. public void setAllDataCount(int allDataCount) {
  60. this.allDataCount = allDataCount;
  61. }
  62.  
  63. public long getNextPage() {
  64. return nextPage;
  65. }
  66.  
  67. public void setNextPage(int nextPage) {
  68. this.nextPage = nextPage;
  69. }
  70.  
  71. public int getCode() {
  72. return code;
  73. }
  74.  
  75. public void setCode(int code) {
  76. this.code = code;
  77. }
  78.  
  79. public String getMsg() {
  80. return msg;
  81. }
  82.  
  83. public void setMsg(String msg) {
  84. this.msg = msg;
  85. }
  86.  
  87. public int getTotal() {
  88. return total;
  89. }
  90.  
  91. public void setTotal(int total) {
  92. this.total = total;
  93. }
  94.  
  95. public T getContent() {
  96. return content;
  97. }
  98.  
  99. public void setContent(T content) {
  100. this.content = content;
  101. }
  102. }

Android用Gson解析JSON字符串的更多相关文章

  1. 【Android进阶】Gson解析json字符串的简单应用

    在客户端与服务器之间进行数据传输,一般采用两种数据格式,一种是xml,一种是json.这两种数据交换形式各有千秋,比如使用json数据格式,数据量会比较小,传输速度快,放便解析,而采用xml数据格式, ...

  2. Gson解析json字符串、json数组转换成对象

    实体类: public class Product { private int id; private String name; private String date; public int get ...

  3. Android 使用Gson解析json案例具体解释

    一.眼下解析json有三种工具:org.json(Java经常使用的解析),fastjson(阿里巴巴project师开发的),Gson(Google官网出的),解析速度最快的是Gson,下载地址:h ...

  4. Gson解析json字符串

    // 解析传递过来的json字符串 JsonParser parser = new JsonParser(); JsonObject jsonObj = parser.parse(strJson).g ...

  5. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  6. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. Android中使用Gson解析JSON数据

      Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...

  8. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

  9. 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址

    在线聊天项目结构图: 多用户登陆效果图: 多用户聊天效果图: 数据库效果图: 重新构建了Server类,使用了Gson方法,通过解析Json字符串,增加Info类,简化判断过程. Server类代码如 ...

随机推荐

  1. win7 64位下使用regsvr32注册activex dll .

    由于公司产品用了很多activex dll,而我的操作系统是64位的win7,在注册这些dll时碰到了很多问题,经过摸索,最后还是成功注册了,步骤如下: 1.在C:\Windows\SysWOW64\ ...

  2. Servlet+MyBatis项目转Spring Cloud微服务,多数据源配置修改建议

    一.项目需求 在开发过程中,由于技术的不断迭代,为了提高开发效率,需要对原有项目的架构做出相应的调整. 二.存在的问题 为了不影响项目进度,架构调整初期只是把项目做了简单的maven管理,引入spri ...

  3. Python 对象学习一

    # 对象的基本理论 # 什么是对象? # 万物皆对象 # 对象是具体物体 # 拥有属性 # 拥有行为 # 把很多零散的东西,封装成为一个整体 # 举例:王二小 # 属性 # 姓名 # 年龄 # 身高 ...

  4. 一图看懂join、left join、right join、fulljoin间的区别

    INNER JOIN 关键字在表中存在至少一个匹配时返回行. LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配.如果右表中没有匹配,则结果为 NULL. ...

  5. Linux(CentOS)网络配置

    1. 查看网口连接情况 2.修改网卡 3.修改主机名 4.重新启动网络 5.查看连接ifconfig,ping网络 copyright@2015 liupan liu.pan@datatom.com

  6. scala学习手记17 - 容器和类型推断

    关于scala的类型推断前面已经提到过多次.再来看一下下面这个例子: import java.util._ var list1: List[Int] = new ArrayList[Int] var ...

  7. 从TensorFlow 到 Caffe2:盘点深度学习框架

    机器之心报道 本文首先介绍GitHub中最受欢迎的开源深度学习框架排名,然后再对其进行系统地对比 下图总结了在GitHub中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在GitHub里的收藏数 ...

  8. LeetCode第[56]题(Java):Merge Intervals

    题目:合并区间 难度:Medium 题目内容:   Given a collection of intervals, merge all overlapping intervals. 翻译: 给定一个 ...

  9. LeetCode第[13]题(Java):Roman to Integer

    题目:罗马数字转换 题目难度:easy 题目内容:Roman numerals are represented by seven different symbols: I, V, X, L, C, D ...

  10. WPF中关于配置文件的读取

    在WPF中的配置文件的读取也是经常用到的一个操作,虽然很基础,但是也记录一下,以后忘记了可以看一看. 首先就是先新建一个Application Configuration Flie后缀名是.confi ...