zoukankan      html  css  js  c++  java
  • 数据解析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字符串。

      

      未完,待续。

      

          

      

  • 相关阅读:
    Node.js Path 模块
    Node.js OS 模块
    Node.js 工具模块
    【翻译】热门支持小提示:2013年12月
    【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之二
    俺的新书《Sencha Touch实战》终于出版了
    【翻译】热门支持技巧
    【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之一
    不错的东西: AutoMapper
    一个很不错的支持Ext JS 4的上传按钮
  • 原文地址:https://www.cnblogs.com/enjoy-coding/p/4816098.html
Copyright © 2011-2022 走看看