最近解析些复杂的节点数据解析,用安卓自带的json解析比较麻烦所以只能用Gson解析,所以从网上下了点demo来看看
http://blog.csdn.net/tkwxty/article/details/34474501这个看看还不错
例子代码如下
1 package org.heim.gson; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Map; 6 7 import com.google.gson.Gson; 8 import com.google.gson.JsonArray; 9 import com.google.gson.JsonElement; 10 import com.google.gson.JsonObject; 11 import com.google.gson.JsonParser; 12 import com.google.gson.JsonPrimitive; 13 import com.google.gson.reflect.TypeToken; 14 15 public class DemoParser { 16 17 public static void main(String[] args) { 18 19 // parser2Object(); 20 21 // parser2List(); 22 23 // parser2Map(); 24 25 // json 节点解析 26 String json = "{'flag':true,'data':{'name':'张三','age':18,'sex':true}}"; 27 // 1.获得 解析者 28 JsonParser parser = new JsonParser(); 29 30 // 2.获得 根节点元素 31 JsonElement element = parser.parse(json); 32 33 // 3.根据 文档判断根节点属于 什么类型的 Gson节点对象 34 JsonObject root = element.getAsJsonObject(); 35 36 // 4. 取得 节点 下 的某个节点的 value 37 JsonPrimitive flagJson = root.getAsJsonPrimitive("flag"); 38 boolean flag = flagJson.getAsBoolean(); 39 40 JsonObject dataJson = root.getAsJsonObject("data"); 41 Student student = new Gson().fromJson(dataJson, Student.class); 42 43 System.out.println(flag); 44 System.out.println(student); 45 46 } 47 48 private static void parser2Element() { 49 String json = "{'flag':true,'data':[{'name':'张三','age':18,'sex':true},{'name':'李四','age':14,'sex':true},{'name':'王二','age':12,'sex':true}]}"; 50 // 1.获得 解析者 51 JsonParser parser = new JsonParser(); 52 53 // 2.获得 根节点元素 54 JsonElement element = parser.parse(json); 55 56 // 3.根据 文档判断根节点属于 什么类型的 Gson节点对象 57 JsonObject root = element.getAsJsonObject(); 58 59 // 4. 取得 节点 下 的某个节点的 value 60 JsonPrimitive flagJson = root.getAsJsonPrimitive("flag"); 61 boolean flag = flagJson.getAsBoolean(); 62 JsonArray array = root.getAsJsonArray("data"); 63 ArrayList<Student> students = new ArrayList<Student>(); 64 for (JsonElement obj : array) { 65 students.add(new Gson().fromJson(obj, Student.class)); 66 } 67 System.out.println(flag); 68 System.out.println(students.get(0).getName()); 69 System.out.println(students.get(1).getName()); 70 System.out.println(students.get(2).getName()); 71 } 72 73 private static void parser2Map() { 74 String json = "{'小3':{'name':'小3','age':20,'sex':true},'小4':{'name':'小4','age':21,'sex':false},'小5':{'name':'小5','age':22,'sex':true},'小1':{'name':'小1','age':18,'sex':true},'小2':{'name':'小2','age':19,'sex':false}}"; 75 76 Gson gson = new Gson(); 77 TypeToken<Map<String, Student>> token = new com.google.gson.reflect.TypeToken<Map<String, Student>>() { 78 }; 79 Map<String, Student> stus = gson.fromJson(json, token.getType()); 80 81 System.out.println(stus); 82 } 83 84 private static void parser2List() { 85 86 String json = "[{'name':'小1','age':18,'sex':true},{'name':'小2','age':19,'sex':false},{'name':'小3','age':20,'sex':true},{'name':'小4','age':21,'sex':false},{'name':'小5','age':22,'sex':true}]"; 87 88 Gson gson = new Gson(); 89 TypeToken<List<Student>> token = new com.google.gson.reflect.TypeToken<List<Student>>() { 90 }; 91 List<Student> stus = gson.fromJson(json, token.getType()); 92 93 System.out.println(stus); 94 } 95 96 private static void parser2Object() { 97 // json转换 为简单对象 98 String json = "{'name':'张三','age':18,'sex':true}"; 99 100 Gson gson = new Gson(); 101 102 Student student = gson.fromJson(json, Student.class); 103 System.out.println(student); 104 } 105 }