Gson data parsing

The biggest difference between gson and other existing java json class libraries is that the entity classes that gson need to serialize do not need to use annotations to identify the fields that need to be serialized, and gson can flexibly configure the fields that need to be serialized by using annotations. 

Here is a simple example:
  1. public class Person {  
  2.   
  3.     private String name;  
  4.     private int age;  
  5.   
  6.     /** 
  7.      * @return the name 
  8.      */  
  9.     public String getName() {  
  10.         return name;  
  11.     }  
  12.   
  13.     /** 
  14.      * @param name the name to set 
  15.      */  
  16.     public void setName(String name) {  
  17.         this.name = name;  
  18.     }  
  19.   
  20.     /** 
  21.      * @return the age 
  22.      */  
  23.     public int getAge() {  
  24.         return age;  
  25.     }  
  26.   
  27.     /** 
  28.      * @param age the age to set 
  29.      */  
  30.     public void setAge(int age) {  
  31.         this.age = age;  
  32.     }  
  33.       
  34.     @Override  
  35.     public String toString()  
  36.     {  
  37.         return name + ":" +age;  
  38.     }  
  39. }  

The entity is very simple, with two fields. Of course, the fields in the entity can also be of type List or Set.

  1. Gson gson =  new Gson ();  
  2. List<Person> persons = new ArrayList<Person>();  
  3. for (int i = 0; i < 10; i++) {  
  4.      Person p = new Person();  
  5.      p.setName("name" + i);  
  6.      p.setAge(i * 5);  
  7.      persons.add(p);  
  8. }  
  9. String str = gson.toJson(persons);  


上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的str对象值为: 
[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}] 
很标准的json数据,很简单吧,呵呵。 
下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。 
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。 
先来看第一种: 
比如json字符串为:[{"name":"name0","age":0}] 
代码:

  1. Person person = gson.fromJson(str, Person.class);  


提供两个参数,分别是json字符串以及需要转换对象的类型。 
第二种,转换成列表类型: 
代码:
  1. List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());  
  2. for(int i = 0; i < ps.size() ; i++)  
  3. {  
  4.      Person p = ps.get(i);  
  5.      System.out.println(p.toString());  
  6. }  


可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。 
Gson的基本使用就是这么多,至于annotation方面可以参考gson的官方文档,希望能对初学java和gson的同学有所帮助。

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325030968&siteId=291194637