【Android开发经验】超好用的json解析工具——Gson项目使用介绍

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

在上一篇文章中,我们简单的介绍了json数据格式,并介绍了如何使用Android自带的json工具,完成json数据的生成与解析。但是就像我所说的,自带的工具类太难用了!因此这篇文章,会介绍一个json解析的非常好的工具,那就是google的开源项目Gson。

咱们这次不介绍Gson里面的常用类了,因为常用的几个类非常的简单,我们直接上手开始用,看看Gson是多么的强大!

当然,如果使用第三方的项目,我们肯定要导入jar包了,一搜一大把哈。

给出测试Model代码

package com.example.jsondemo;

public class Person {

	private String name;
	private int age;
	private Birthday birthday;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Birthday getBirthday() {
		return birthday;
	}

	public void setBirthday(Birthday birthday) {
		this.birthday = birthday;
	}

	public Person() {
		super();
	}

	public Person(String name, int age, Birthday birthday) {
		super();
		this.name = name;
		this.age = age;
		this.birthday = birthday;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", birthday="
				+ birthday + "]";
	}

}
package com.example.jsondemo;

/**
 *
 * @ClassName: com.example.jsondemo.Birthday
 * @Description: 生日类
 * @author zhaokaiqiang
 * @date 2014-11-26 上午10:29:47
 *
 */
public class Birthday {

	private int year;
	private int month;
	private int day;

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}

	public int getMonth() {
		return month;
	}

	public void setMonth(int month) {
		this.month = month;
	}

	public int getDay() {
		return day;
	}

	public void setDay(int day) {
		this.day = day;
	}

	public Birthday() {
		super();
	}

	public Birthday(int year, int month, int day) {
		super();
		this.year = year;
		this.month = month;
		this.day = day;
	}

	@Override
	public String toString() {
		return "Birthday [year=" + year + ", month=" + month + ", day=" + day
				+ "]";
	}

}

1.Object与Json的相互转换

咱们先从最简单的单一对象开始说。

下面是代码实现

/**
	 * 单一对象的json生成与解析
	 */
	public void objectToJson() {

		Person p = new Person("zhaokaiqiang", 22, new Birthday(1992, 1, 19));
		Gson gson = new Gson();

		String jsonString = gson.toJson(p);

		Log.d(TAG, "---------单一对象生成--------");
		Log.d(TAG, jsonString);

		Person person = gson.fromJson(jsonString, Person.class);

		Log.d(TAG, "---------单一对象解析--------");
		Log.d(TAG, person.toString());

	}

这代码是多么的简洁,美观啊!

在上一篇的文章中,如果要生成简单对象的话,我们还需要自己指定key,然后设置value,自从用了Gson,我们再也没有这些烦恼了!而且为了说明Gson的强大之处,我还特意给Person设置了一个对象Birthday,如果使用自带的json工具,那不就麻烦死了。但是使用Gson,根本不需要有这些顾虑。看下面的转换结果,一个toJson(),完全解决问题,太棒了!

11-26 16:16:38.392: D/GsonTest(16931): ---------单一对象生成--------
11-26 16:16:38.392: D/GsonTest(16931): {"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}
11-26 16:16:38.392: D/GsonTest(16931): ---------单一对象解析--------
11-26 16:16:38.392: D/GsonTest(16931): Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]]

2.集合与Json的相互转换

Gson除了可以很方便的与单一对象进行转换之外,还能够与集合进行转换。

下面是一个生成Json,并完成解析的代码:

/**
	 * 集合对象的json生成与解析
	 */
	public void objectsToJson() {

		Gson gson = new Gson();
		Person person = new Person("zhaokaiqiang", 22,
				new Birthday(1992, 1, 19));
		ArrayList<Person> arrayList = new ArrayList<Person>();
		arrayList.add(person);
		arrayList.add(person);
		arrayList.add(person);

		String jsonString = gson.toJson(arrayList);

		Log.d(TAG, "---------集合对象生成--------");
		Log.d(TAG, jsonString);

		Type type = new TypeToken<ArrayList<Person>>() {
		}.getType();

		ArrayList<Person> persons = gson.fromJson(jsonString, type);

		Log.d(TAG, "---------集合对象解析--------");
		Log.d(TAG, persons.toString());
	}

这是转换出来的结果

---------集合对象生成--------
[{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22},{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22},{"name":"zhaokaiqiang","birthday":{"day":19,"month":1,"year":1992},"age":22}]
 ---------集合对象解析--------
 [Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]], Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]], Person [name=zhaokaiqiang, age=22, birthday=Birthday [year=1992, month=1, day=19]]]

还记得我们使用json如果想完成类似的功能的时候,是不可想象的,但是使用Gson来实现的话,确实如此的简单。

在使用Gson.toJson()方法的时候,我们可以把任何对象或者是集合放进去,就可以完美的转换成json格式。

如果想把json格式的数据转换成我们想要的对象,我们只需要调用Gson.fromJson()即可。

但是在转换的时候,第二个参数有两种形式,一种是Class<?>,这个是转换单一的对象的时候,我们需要把对象.class传递进去,告诉转换器要转换的类型。如果我们需要转换的是集合,我们需要传递一个实现Type接口的实例,具体语法就和上面的代码一样,集合类型还有具体的对象换一下就可以了。

时间: 2024-12-27 06:19:18

【Android开发经验】超好用的json解析工具——Gson项目使用介绍的相关文章

Android应用之——谷歌官方Json解析工具Gson的使用

一.Gson简介 Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象.也就是Java对象与json字符串间的互相转换,解析. 二.使用方法 Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象.即先创建好对应的javabean,javabean中的字段与要转换的

Android中的应用——谷歌官方Json分析工具Gson使用

一个.Gson基本介绍 Gson(又称Google Gson)是Google公司公布的一个开放源码的Java库.主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象. 也就是Java对象与json字符串间的互相转换.解析. 二.用法 Gson的应用主要为toJson与fromJson两个转换函数,而在使用这样的对象转换之前需先创建好对象的类型以及其成员才干成功的将JSON字符串成功转换成相相应的对象.即先创建好相应的javabean.javabean中的字段与要转

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的好用,今天我们为了博客的保质保量,也就不分开写,我们直接拿比较火的Gson和Fast-json来使用,末尾在进行一些分析 Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 一.各有千秋 两大解析库的东家都是巨头,一个来自于Google官方,一个来自阿里巴巴,我们这

[转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如

Java:JSON解析工具-org.json

一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中,即可调用. 2.查看相关的API文档,访问:https://github.com/douglascrockford/JSON-java. https

JSON解析工具-org.json使用教程

原文地址:http://www.open-open.com/lib/view/open1381566882614.html 一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网址https://github.com/douglascrockford/JSON-java下载org.json源码,并将源码其加入到Eclipse中,即可调用. 2.查看相关

实现json解析工具jcat

jcat是一个shell下的解析json的工具,具有以下功能: 支持指定路径解析,打印指定路径下的所有对象信息 支持宏路径,可以级联宏替换 使用tbox进行了跨平台支持,预编译版本直接可以在./tbox/tool目录下找到,因为新版tbox makefile架构就是采用jcat来解析*.pkg/manifest.json清单文件 使用方式拿polarssl.pkg/manifest.json的举例: { "format": { "name": "The T

Json解析工具类JsonHelper

利用Gson快速解析json 需要导入Gson包,解析成一个对象或一个包含此对象的list JsonHelper代码如下: import java.util.ArrayList; import java.util.List; import android.text.TextUtils; import com.google.gson.Gson; import com.google.gson.JsonParseException; import com.google.gson.JsonParser;

json解析之gson

Gson是Google的一个开源项目,可以将Java对象转换成JSON,也可能将JSON转换成Java对象. Gson里最重要的对象有2个Gson 和 GsonBuilder Gson有2个最基本的方法 1) toJson() – 转换java 对象到JSON 2) fromJson() – 转换JSON到java对象 对于泛型对象,使用fromJson(String, Type)方法来将Json对象转换成对应的泛型对象 new TypeToken<>(){}.getType()方法取得Typ