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