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=杨过}
原标题:Java 利用Gson解析Json数据
关键词:JS