使用Gson送解析Json格式

Java bean:

package com.jingle.a;

public class Person {
    public String name;
    public int age;
    
    public Person (){
        
    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    
    

}

测试类:

 1 package com.jingle.a;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import com.google.gson.Gson;
 7 import com.google.gson.reflect.TypeToken;
 8 
 9 public class A {
10 
11     /**
12      * @param args
13      */
14     public static void main(String[] args) {
15         // TODO Auto-generated method stub
16 
17         Gson gson = new Gson();
18 
19         List<Person> perList = new ArrayList<Person>();
20         for (int i = 0; i < 5; i++) {
21             Person p = new Person(String.valueOf(i), i);
22             perList.add(p);
23 
24         }
25         // 对象实体的序列化:将对象实体转为json格式
26         String str = gson.toJson(perList);
27 
28         System.out.println(perList);
29         // list toString 带类名称
30         // [Person [name=0, age=0], Person [name=1, age=1], Person [name=2,
31         // age=2], Person [name=3, age=3], Person [name=4, age=4]]
32         System.out.println(str);
33 
34         // 使用Gson将list转为Json格式输出则不带类名,只是key-value
35         // [{"name":"0","age":0},{"name":"1","age":1},{"name":"2","age":2},{"name":"3","age":3},{"name":"4","age":4}]
36 
37         // json格式的反序列化,将json格式转为对象实体
38         // 在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
39 
40         String j1 = "{'name':'a', 'age':'25'}";
41         Gson g1 = new Gson();
42         // 单一实体对象
43         // 参数1:json数据,参数2:需要转换对象的类型
44         // **********************
45         Person p1 = g1.fromJson(j1, Person.class);
46         // **********************
47 
48         System.out.println(p1);
49 
50         // 对象列表
51         Gson g2 = new Gson();
52 
53         // **********************
54         List<Person> ps = g2.fromJson(str, new TypeToken<List<Person>>() {
55         }.getType());
56         // **可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换
57         // gson和其他现有java
58         // json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
59         System.out.println(ps);
60 
61     }
62 }

 

posted @ 2015-03-16 09:57  鲸歌  阅读(122)  评论(0编辑  收藏  举报