你的位置:首页 > Java教程

[Java教程]Java 利用Gson解析Json数据

1.可以利用Android API中的JsonReader解析Json数据

2.可以引入Gson的jar包,结合JavaBean解析Json数据

 

Bean.java

package com.sphere.json;public class Bean {  /**   * Bean中的数据必须与Json数据中的key键值   * 一一对应 名字不可更改、   * name 与json的name键值对应   * wife 与json数据中的wife对应   * 否则会出现读取为null的现象   */  private String name;  private String wife;    public String getName() {    return name;  }  public void setName(String name) {    this.name = name;  }  public String getWife() {    return wife;  }  public void setWife(String wife) {    this.wife = wife;  }    }

View Code

 

Gson解析工具类

package com.sphere.json;import java.io.IOException;import java.io.StringReader;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import com.google.gson.stream.JsonReader;public class JsonUtils {  /**   * 使用JsonReader   * @param data   */  public void parseJson(String data){    try {      //创建JsonReader对象      JsonReader reader = new JsonReader(new StringReader(data));      //开始解析数组      reader.beginArray();      while(reader.hasNext()){        //开始解析对象        reader.beginObject();        while(reader.hasNext()){          //得到键          String tagName = reader.nextName();          if(tagName.equals("name")){            System.out.print("name --->"+reader.nextString());          }          else if(tagName.equals("wife")){            System.out.println("  wife --->"+reader.nextString());          }        }        //解析对象结束        reader.endObject();      }      //解析数组结束      reader.endArray();    } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }  }    //解析json数组 返回list对象  public ArrayList<HashMap<String, String>> parseBeanFromJson(String jsonArray){        //Gson解析Json数组    Type type = new TypeToken<LinkedList<Bean>>(){}.getType();    Gson gson = new Gson();    LinkedList<Bean> beans = gson.fromJson(jsonArray, type);            ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();    for (Iterator iterator = beans.iterator(); iterator.hasNext();) {      Bean bean = (Bean) iterator.next();      //System.out.print(bean.getName());      //System.out.println(bean.getWife());            HashMap<String, String> map = new HashMap<String, String>();      map.put("name", bean.getName());      map.put("wife", bean.getWife());      /*添加到list中*/      list.add(map);    }        /*遍历list*/    int index = 0;    for (Iterator iterator = list.iterator(); iterator.hasNext();) {      HashMap<String, String> hashMap = (HashMap<String, String>) iterator.next();      System.out.println("list中第"+(++index)+"个元素"+hashMap);    }        return list;  }}

 

 

测试类Test.java

package com.sphere.json;import com.google.gson.Gson;public class Test {    static String jsonArray = "[{\"name\":\"张无忌\",\"wife\":\"敏敏特穆尔\"},{\"name\":\"杨过\",\"wife\":\"小龙女\"}]";    static String jsonData = "{\"name\":\"张无忌\",\"wife\":\"敏敏特穆尔\"}";      public static void main(String[] args) {    new JsonUtils().parseJson(jsonArray);    System.out.println();        /**********解析Json数据***********/    Gson gson = new Gson();    Bean user = gson.fromJson(jsonData, Bean.class);    System.out.println("我叫"+user.getName()+" 我妻子是"+user.getWife());    System.out.println();        /**********解析Json数组***********/    new JsonUtils().parseBeanFromJson(jsonArray);  }}

 

 

输出结果:

name --->张无忌  wife --->敏敏特穆尔name --->杨过  wife --->小龙女我叫张无忌 我妻子是敏敏特穆尔list中第1个元素{wife=敏敏特穆尔, name=张无忌}list中第2个元素{wife=小龙女, name=杨过}