Gson解析的小例子

时间:2021-07-03 19:59:53

最近解析些复杂的节点数据解析,用安卓自带的json解析比较麻烦所以只能用Gson解析,所以从网上下了点demo来看看

http://blog.csdn.net/tkwxty/article/details/34474501这个看看还不错

SessionId的本质

http://www.cnblogs.com/japanbbq/archive/2011/09/01/2161650.html

http://www.cnblogs.com/haippy/archive/2012/05/20/2509329.html#

例子代码如下

 package org.heim.gson;

 import java.util.ArrayList;
import java.util.List;
import java.util.Map; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
import com.google.gson.reflect.TypeToken; public class DemoParser { public static void main(String[] args) { // parser2Object(); // parser2List(); // parser2Map(); // json 节点解析
String json = "{'flag':true,'data':{'name':'张三','age':18,'sex':true}}";
// 1.获得 解析者
JsonParser parser = new JsonParser(); // 2.获得 根节点元素
JsonElement element = parser.parse(json); // 3.根据 文档判断根节点属于 什么类型的 Gson节点对象
JsonObject root = element.getAsJsonObject(); // 4. 取得 节点 下 的某个节点的 value
JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
boolean flag = flagJson.getAsBoolean(); JsonObject dataJson = root.getAsJsonObject("data");
Student student = new Gson().fromJson(dataJson, Student.class); System.out.println(flag);
System.out.println(student); } private static void parser2Element() {
String json = "{'flag':true,'data':[{'name':'张三','age':18,'sex':true},{'name':'李四','age':14,'sex':true},{'name':'王二','age':12,'sex':true}]}";
// 1.获得 解析者
JsonParser parser = new JsonParser(); // 2.获得 根节点元素
JsonElement element = parser.parse(json); // 3.根据 文档判断根节点属于 什么类型的 Gson节点对象
JsonObject root = element.getAsJsonObject(); // 4. 取得 节点 下 的某个节点的 value
JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
boolean flag = flagJson.getAsBoolean();
JsonArray array = root.getAsJsonArray("data");
ArrayList<Student> students = new ArrayList<Student>();
for (JsonElement obj : array) {
students.add(new Gson().fromJson(obj, Student.class));
}
System.out.println(flag);
System.out.println(students.get(0).getName());
System.out.println(students.get(1).getName());
System.out.println(students.get(2).getName());
} private static void parser2Map() {
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}}"; Gson gson = new Gson();
TypeToken<Map<String, Student>> token = new com.google.gson.reflect.TypeToken<Map<String, Student>>() {
};
Map<String, Student> stus = gson.fromJson(json, token.getType()); System.out.println(stus);
} private static void parser2List() { 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}]"; Gson gson = new Gson();
TypeToken<List<Student>> token = new com.google.gson.reflect.TypeToken<List<Student>>() {
};
List<Student> stus = gson.fromJson(json, token.getType()); System.out.println(stus);
} private static void parser2Object() {
// json转换 为简单对象
String json = "{'name':'张三','age':18,'sex':true}"; Gson gson = new Gson(); Student student = gson.fromJson(json, Student.class);
System.out.println(student);
}
}