Json解析(使用Gson)
程序员文章站
2024-01-12 19:41:58
...
JsonElement,该类是一个抽象类,代表着json串的某一个元素。这个元素可以是一个Json(JsonObject)、可以是一个数组(JsonArray)、可以是一个Java的基本类型(JsonPrimitive)、当然也可以为null(JsonNull);JsonObject,JsonArray,JsonPrimitive,JsonNull都是JsonElement这个抽象类的子类。JsonElement提供了一系列的方法来判断当前的JsonElement
JsonObject对象可以看成 name/values的集合,而这写values就是一个个JsonElement,他们的结构可以用如下图表示:
JsonNull:
该类没什么可说的,为不可变类。当然在json中所有的JsonNullObject 调用equals方法判断的话都是相等的。
JsonArray:
Json的数组包含的其实也是一个个Json串。所以不难猜出JsonArray中用一个集合类源码中用List来添加json数组中的每个元素。(详见源码,很简单)
JsonObject:
json对象类,包含了键值对,键是字符串类型,它的值是一个JsonElement。用 LinkedTreeMap<String, JsonElement> members来保存。
- Json解析成java对象
Gson gson = new Gson();
//将json转化为java对象
Student stu=gson.fromJson(json,Student.class);
- Json解析成List
Gson gson=new Gson();
//将json转化为List泛型
List<Student> stu=gson.fromJson(json,new TypeToken<List<Student>>(){}.getType());
- Json解析成map
Gson gson=new Gson();
//将json转化为Map泛型
Map<String,String> map=gson.fromJson(json,new TypeToken<Map<String,String>>(){}.getType());
- Json节点的解析
步骤
1:获得解析者
JsonParser parser=new JsonParser();
2:获得根节点元素
JsonElement root=parser.parse(json);
3:根据文档判断根节点属于什么类型的Gson节点对象
//假如文档显示根节点为对象类型(也有可能是JsonArray,JsonPrimitive,JsonNull)
JsonObject element=root.getAsJsonObject();
4:取得节点下的某个节点的值
//获得name节点的值,name节点为基本数据节点
JsonPrimitive nameJson=element.getAsJsonPrimitive("name");
String name=nameJson.getAsString();
//获得students节点的值,students节点为数组数据节点
JsonArray arrayJson=element.getAsJsonArray("Students");
//获得数组的长度
int size=arrayJson.size();
for(int i=0;i<size;i++){
//获得每一个json元素
JsonElement e=arrayJson.get(i);}
//通过元素获得需要的节点值TODO)
上一篇: CodeVs1082 线段树练习 3
下一篇: 将分支上的代码push到代码仓中