为了账号安全,请及时绑定邮箱和手机立即绑定

Android解析之三分钟教你快速掌握并使用GSON解析Json

标签:
Android

目前网络数据都是以json格式返回到客户端,而解析json的方式却有好多种。在项目中比较常用的是Gson解析,那么接下来,由我为大家讲解如何快速掌握使用Gson解析多种复杂json。

首先大家心里要明白以下几个问题:

  1. 什么是Gson?

  2. 为什么要使用Gson解析json?使用Gson解析json有什么优势?

  3. 如何快速有效理解并掌握使用Gson解析json?

现在我们来回顾一下,什么是json?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式
JSON 独立于语言 
JSON 具有自我描述性,更易理解
总之, JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

给大家推荐一个Json在线解析及格式化验证网址:http://www.bejson.com//

回归正题,下面开始解答在片头提出的三个问题:

  • 什么是Gson?

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。

  • 为什么要使用Gson解析json?使用Gson解析json有什么优势?

首先使用Gson解析可以很方便的将一个 Json 字符串转成一个 Java 对象,或者将一个Java对象转成一个Json字符串(前提注意,java对象属性要和json中要字段一一对应,否则解析失败)。其次,我个人觉得,使用Gson解析很方便,你想想,实体类和json对应,而且Gson中会提供直接转java或者json的方法,只需寥寥几行就可以实现,对我LZ脑子反应慢的人来说,真是解析Json必备利器之一哈。。。

  • 如何快速有效理解并掌握使用Gson解析json?

其实我理解的就是Gson解析json就是,首先会有一个和json字符串相对应的Java Bean。其次,使用Gson所提供的toJson()将实体类转化为json格式的字符串,或者使用fromJson()将json格式的字符串直接转为你的实体类。其中涉及到java反射,射来射去的,有兴趣的大家可以自己去了解一下

下面为大家介绍Gson解析中所提供的很强大的方法:
1.1 toJson()方法

  toJson()方法用于将Java对象转换为相应的JSON数据,主要有以下几种形式:

  (1)String toJson(JsonElement jsonElement);

  (2)String toJson(Object src);

  (3)String toJson(Object src, Type typeOfSrc);

  其中,方法(1)用于将JsonElement对象(可以是JsonObject、JsonArray等)转换成JSON数据;方法(2)用于将指定的Object对象序列化成相应的JSON数据;方法(3)用于将指定的Object对象(可以包括泛型类型)序列化成相应的JSON数据。

1.2 fromJson()方法

  fromJson()方法用于将JSON数据转换为相应的Java对象,主要有以下几种形式:

  (1)<T> T fromJson(JsonElement json, Class<T> classOfT);

  (2)<T> T fromJson(JsonElement json, Type typeOfT);

  (3)<T> T fromJson(JsonReader reader, Type typeOfT);

  (4)<T> T fromJson(Reader reader, Class<T> classOfT);

  (5)<T> T fromJson(Reader reader, Type typeOfT);

  (6)<T> T fromJson(String json, Class<T> classOfT);

  (7)<T> T fromJson(String json, Type typeOfT);

  以上的方法用于将不同形式的JSON数据解析成Java对象。

啰嗦了这么多,接下来开始实战。。。

下载一个gson包,并导入项目工程中...

提供我当前使用的json字符串如下:

json串太长,拷贝时没注意,竟然不正确,不过不妨碍大家继续学习,暂时删除此json数据

看到这么一堆json串串,是不是感觉有点头大,不急,我们现在打开上面提供的Json在线解析及格式化验证网址:http://www.bejson.com//。我们一起来分析分析,赤裸裸站在我们面前~

这里面包括了
三个字段(message,today,code),俩个List(List<AppAppMessageBigBean>,List<AppRecommendCommodityBean>)以及一个对象(CourseOneStageBean)。
首先在xxx.xxx.httpbeans下创建当前接受json的实体类,格式如下:

public class MessageBigBeansAndRecommendCommodityBean {    private int code;//返回Code码
    private String message;//返回信息
    private String today;//当前时间
    private CourseOneStageBean courseonestagebean;// 课程阶段
    private List<AppMessageBigBean> appMessageBigBeans;// 资讯推荐list
    private List<AppRecommendCommodityBean> appRecommendCommodityBeans;// 为您推荐(商品定制)

    public int getCode() {        return code;
    }    public void setCode(int code) {        this.code = code;
    }    public String getMessage() {        return message;
    }    public void setMessage(String message) {        this.message = message;
    }    public String getToday() {        return today;
    }    public void setToday(String today) {        this.today = today;
    }    public CourseOneStageBean getCourseOneStageBean() {        return courseonestagebean;
    }    public void setCourseOneStageBean(CourseOneStageBean courseOneStageBean) {        this.courseonestagebean = courseOneStageBean;
    }    public List<AppMessageBigBean> getAppMessageBigBeans() {        return appMessageBigBeans;
    }    public void setAppMessageBigBeans(List<AppMessageBigBean> appMessageBigBeans) {        this.appMessageBigBeans = appMessageBigBeans;
    }    public List<AppRecommendCommodityBean> getAppRecommendCommodityBeans() {        return appRecommendCommodityBeans;
    }    public void setAppRecommendCommodityBeans(List<AppRecommendCommodityBean> appRecommendCommodityBeans) {        this.appRecommendCommodityBeans = appRecommendCommodityBeans;
    }

}

其中关于CourseOneStageBean ,AppMessageBigBean,AppRecommendCommodityBean这三个实体类属性和json中一一对应,这几个实体类可以放在xxx.xxx.beans下,以便更好的区分网络接收所需的Java Bean和本地所需Java Bean。

只要你确认上面实体类和json中一一对应,下面都是小意思啦。。。

Gson gson = new Gson();//json转JavaBeanMessageBigBeansAndRecommendCommodityBean messageBigBeansAndRecommendCommodityBean = gson.fromJson("Json字符串", MessageBigBeansAndRecommendCommodityBean.class);//JavaBean转jsonString json=gson.toJson(messageBigBeansAndRecommendCommodityBean);

第一次认认真真写一篇博客。。。有问题可以大家一起研究~虽然我懂得不多~哈

原文链接:http://www.apkbus.com/blog-904057-68143.html

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消