Gson的基本介绍和使用
2016-01-15 17:50
295 查看
JSON是我们在实际开发最常用的数据交换格式,GSON则是谷歌提供的用来解析Json数据的一个Java类库,在进行Gson介绍之前我们通过以下几个部分对Gson进行深入的了解。
一、JSON的简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。用于数据转化传输,通用于PHP、Java、C++、C#、Python等编程语言的数据交换传输。它易于人阅读和编写,同时也易于机器解析和生成。基本结构:对象、数组
二、GSON简介和特点
GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。特点:a、快速、高效
b、代码量少、简洁
c、面向对象
d、数据传递和解析方便
三、GSON的基本使用
Json数据如下:{ "rating": { "max": 10, "numRaters": 348, "average": "7.0", "min": 0 }, "subtitle": "", "author": [ "[日] 片山恭一" ], "pubdate": "2005-1", "tags": [ { "count": 136, "name": "片山恭一", "title": "片山恭一" }, { "count": 63, "name": "日本", "title": "日本" }, { "count": 61, "name": "日本文学", "title": "日本文学" }, { "count": 38, "name": "小说", "title": "小说" }, { "count": 32, "name": "满月之夜白鲸现", "title": "满月之夜白鲸现" }, { "count": 15, "name": "爱情", "title": "爱情" }, { "count": 8, "name": "純愛", "title": "純愛" }, { "count": 8, "name": "外国文学", "title": "外国文学" } ], "origin_title": "", "image": "https://img1.doubanio.com/mpic/s1747553.jpg", "binding": "平装", "translator": [ "豫人" ], "catalog": " ", "pages": "180", "images": { "small": "https://img1.doubanio.com/spic/s1747553.jpg", "large": "https://img1.doubanio.com/lpic/s1747553.jpg", "medium": "https://img1.doubanio.com/mpic/s1747553.jpg" }, "alt": "http://book.douban.com/subject/1220562/", "id": "1220562", "publisher": "青岛出版社", "isbn10": "7543632608", "isbn13": "9787543632608", "title": "满月之夜白鲸现", "url": "http://api.douban.com/v2/book/1220562", "alt_title": "", "author_intro": "", "summary": "那一年,是听莫扎特、钓鲈鱼和家庭破裂的一年。说到家庭破裂,母亲怪自己当初没有找到好男人,父亲则认为当时是被狐狸精迷住了眼,失常的是母亲,但出问题的是父亲……。", "price": "15.00元" }我们解析出其中的title、publisher、summary和数组tags。
1、创建一个android工程,并在AndroidManifest.xml文件上添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
2、请求网络数据并进行解析
MainActivity类:
package com.example.gsondemo; import java.util.ArrayList; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.widget.Toast; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.VolleyError; import com.android.volley.toolbox.StringRequest; import com.android.volley.toolbox.Volley; import com.example.bean.Book; import com.example.bean.Tag; import com.google.gson.Gson; public class MainActivity extends ActionBarActivity { //请求接口 private String url = "https://api.douban.com/v2/book/1220562"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getData(); } /** * 获取网络数据 */ private void getData() { //创建请求对象 StringRequest request = new StringRequest(url, new Listener<String>() { @Override public void onResponse(String response) { Log.e("info", response); dealData(response); } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(MainActivity.this, "网络请求出错", Toast.LENGTH_SHORT).show(); } }); //把请求对象加入请求队列里面 new Volley().newRequestQueue(getApplicationContext()).add(request); } public void dealData(String result){ //实例化Gson对象 Gson gson = new Gson(); //把json字符串转化为对象 Book book = gson.fromJson(result, Book.class); ArrayList<Tag> list = book.getTags(); for (int i = 0; i < list.size(); i++) { Tag tag = list.get(i); Log.e("name", tag.getName()); } Toast.makeText(MainActivity.this, "标题:" + book.getTitle() + " 出版社:" + book.getPublisher() + " Tag:" + book.getTags().size(), 1).show(); } }
实体类Book:
package com.example.bean; import java.util.ArrayList; public class Book { private String title;//标题 private String publisher;//出版社 private String summary;//概要 private ArrayList<Tag> tags; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public ArrayList<Tag> getTags() { return tags; } public void setTags(ArrayList<Tag> tags) { this.tags = tags; } }Tag类:
package com.example.bean; public class Tag { private String count; private String name; private String title; public String getCount() { return count; } public void setCount(String count) { this.count = count; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } }
好了,GSON的使用就是那么简单。
项目下载地址:http://download.csdn.net/detail/u013043346/9405847
相关文章推荐
- nginx源代码分析--模块分类
- Android 权限
- sarafi浏览器iframe跨域cookie无效的处理方案(笨方法,看官莫笑)
- 解决 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载
- 到处Android安装程序的 apk
- android SQLiteOpenHelper(数据库)
- shell--学习 sed
- springBoot上传文件大小设置
- Linux命令学习手册-iconv命令
- Retrofit 源码解读之离线缓存策略的实现
- Tomcat的shezhisession超时的几种方式
- Failed to code sign ios开发工程跑不起来之 显示UUID
- Fragment
- 子DIY浮动高度超过父DIV导致父DIV高度变为0
- IOS状态栏和导航栏的控制问题
- sicily 递归练习 1005. Arithmetic Expression Evaluation
- linux环境下gsoap调用过程中的超时设置
- 设置linux环境变量LANG
- Java提高学习之Object(2)
- ALLEGRO 问题累积