你的位置:首页 > 操作系统

[操作系统]Gson解析的小例子


最近解析些复杂的节点数据解析,用安卓自带的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 }