GSON的使用介绍

GSON
       JSON 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。
       Gson是谷歌推出的解析json数据以及将对象转换成json数据的一个开源框架。本文将着重介绍GSON的使用,介绍过程中使用版本为gson-2.2.4.jar。
Gson的基本用法
       Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化。同时每个方法都提供了重载方法。



基本数据类型的解析

/**
 * 基本数据类型解析
 * @author Mahc
 */
public class BasicDataTypeParse {

	public static void main(String[] args) {
		
		Gson gson = new Gson();
		int i = gson.fromJson("18", int.class);
		long l = gson.fromJson("12390", long.class);
		String str = gson.fromJson("string", String.class);
		double d = gson.fromJson("168.60", double.class);
		boolean b = gson.fromJson("true", boolean.class);
	}
}

基本数据类型生成

/**
 * 基本数据类型生成
 * @author Mahc
 *
 */
public class BasicDataTypeGenerate {

	public static void main(String[] args) {
		Gson gson = new Gson();
		String jsonNumber = gson.toJson(100);
		String jsonBoolean = gson.toJson(false);
		String jsonString = gson.toJson("StringText"); //"StringText"
	}
}

POJO类的生成与解析
定义一个Person类

public class Person {

	public String name;
	public int age;
	public String email;
	public String phoneNo;
	/* 此处省略getter与setter方法 */
}

Pojo类生成json

/**
 * Pojo类生成json
 * @author Mahc
 */
public class PojoGenerate {

	public static void main(String[] args) {
		
		Gson gson = new Gson();
		Person person = new Person("HokingMa", 28, "it***@126.com", "137****8888");
		String jsonObject = gson.toJson(person);
		System.out.println(jsonObject);
	}
}


json解析成Pojo类

/**
 * json解析成Pojo类
 * @author Mahc
 */
public class PojoParse {

	public static void main(String[] args) {
		Gson gson = new Gson();
		String jsonString = "{\"name\":\"HokingMa\",\"age\":28,\"email\":\"it***@126.com\",\"phoneNo\":\"137****8888\"}";
		Person person = gson.fromJson(jsonString, Person.class);
		System.out.println(person);
	}
}

Gson中泛型的使用
泛型的使用主要是处理数组和集合。而List对于增删都是比较方便的,所以实际使用是还是List比较多。
扩展阅读:
       对于Java来说List<String> 和List<Person> 这俩个的字节码文件只一个那就是List.class,这是Java泛型使用时要注意的问题 泛型擦除。
       为了解决的上面的问题,Gson为我们提供了TypeToken来实现对泛型的支持。
注:TypeToken的构造方法是protected修饰的,所以创建的方式会写成new TypeToken<List<Person>>() {}.getType() 而不是  new TypeToken<List< Person >>().getType()。

public class GsonListTest {

	public static void main(String[] args) {
		
		Gson gsonGenerate = new Gson();
		List<Person> persons = new ArrayList<Person>();
		for(int i=0;i<6;i++){
			Person person = new Person("HokingMa"+i, 28, "it***@126.com", "137****8888");
			persons.add(person);
		}
		String jsonPersonList = gsonGenerate.toJson(persons);
		System.out.println(jsonPersonList);
		
		//解析jsonListString
		Gson gsonParse = new Gson();
		List<Person> persons2 = gsonParse.fromJson(jsonPersonList, new TypeToken<List<Person>>() {}.getType());
		System.out.println(persons2);
	}
}


【转载使用,请注明出处: http://blog.csdn.net/mahoking

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hoking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值