GSON的使用介绍

来源:互联网 发布:centos 7 更改ftp目录 编辑:程序博客网 时间:2024/06/05 08:32
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);//解析jsonListStringGson gsonParse = new Gson();List<Person> persons2 = gsonParse.fromJson(jsonPersonList, new TypeToken<List<Person>>() {}.getType());System.out.println(persons2);}}


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

0 0
原创粉丝点击