最近解析些複雜的節點數據解析,用安卓自帶的json解析比較麻煩所以只能用Gson解析,所以從網上下了點demo來看看 http://blog.csdn.net/tkwxty/article/details/34474501這個看看還不錯 例子代碼如下 ...
最近解析些複雜的節點數據解析,用安卓自帶的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 }