数据解析2:JSON解析(2)

  JSON解析除了导入json包,通过JSONObject类和JSONArray类进行解析外,还有其他的解析方法,如谷歌Gson解析和阿里巴巴FastJson解析,它们都需要导入相应的包。

 

  下面主要介绍Gson解析和FastJson解析:

  1.Gson解析:

  

    Gson解析JSON字符串的步骤:

    1.创建Gson对象

      Gson gson = new Gson();

    2.调用Gson的解析方法,fromJson()

     

     其中比较常用的是:

        1)fromJson(String json,Class<T> classOfT);

        2)fromJson(String json,Type typeOfT);

        第一种方法第二个参数是一个.Class对象,该方法返回的是一个类的对象,它解析的原JSON字符串是一个对象形式

        第二种方法第二个参数是一个Type对象,该方法返回的是一个List<T>集合,它解析的原JSON字符串是一个数组形式

          TypeToken<T> token = new TypeToken<T>(){};

          Type type = token.getType();

    示例1:

  运行结果:

 

  示例2:

 1 package com.gson;
 2 
 3 import java.util.List;
 4 
 5 import org.json.JSONArray;
 6 import org.json.JSONException;
 7 import org.json.JSONObject;
 8 
 9 import com.google.gson.Gson;
10 import com.google.gson.reflect.TypeToken;
11 
12 public class Test2 {
13     public static void main(String[] args) throws JSONException {
14         String json = "{persons:[{name:'jack',age:23},{name:'tom',age:20}]}";
15 
16         JSONObject object = new JSONObject(json);
17         JSONArray array = object.getJSONArray("persons");
18         
19         Gson gson = new Gson();
20         TypeToken<List<Person>> token = new TypeToken<List<Person>>() {
21         };
22         List<Person> list = gson.fromJson(array.toString(), token.getType());
23         System.out.println(list);
24     }
25 
26     class Person {
27         String name;
28         String age;
29 
30         @Override
31         public String toString() {
32             return "Person [name=" + name + ", age=" + age + "]";
33         }
34     }
35 }
源代码

  运行结果:

 

  2.FastJson解析

  FastJson可以解析四种类型的JSON字符串: 

   1. JavaBean

          Person person = JSON.parseObject(jsonString, Person.class);

      2. List<JavaBean>

          List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

      3. List<String>

          List<String> listString = JSON.parseArray(jsonString, String.class);

      4. List<Map<String,Object>>

          List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});

 

  示例1:

 1 package com.leijia.fastjsondemo;
 2 
 3 import com.alibaba.fastjson.JSON;
 4 
 5 public class Main {
 6     public static void main(String[] args) {
 7         String jsonStr = "{name:'Tom',age:'23'}";
 8         Student student = JSON.parseObject(jsonStr,Student.class);
 9         System.out.println("student:"+student);
10     }
11     private static class Student{
12         String name;
13         String age;
14         
15         public String getName() {
16             return name;
17         }
18 
19         public void setName(String name) {
20             this.name = name;
21         }
22 
23         public String getAge() {
24             return age;
25         }
26 
27         public void setAge(String age) {
28             this.age = age;
29         }
30 
31         @Override
32         public String toString() {
33             return "Student [name=" + name + ", age=" + age + "]";
34         }
35     }
36 }
View Code

   FastJson不仅可以解析Json字符串,同时也可以将对象转换为JSON字符串。

  

  未完,待续。

  

 

 

 

 

 

 

 

 

 

      

  

posted on 2015-10-13 20:48  AellenLei  阅读(626)  评论(0编辑  收藏  举报

导航