欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Json解析(使用Gson)

程序员文章站 2024-01-12 19:41:58
...

JsonElement,该类是一个抽象类,代表着json串的某一个元素。这个元素可以是一个Json(JsonObject)、可以是一个数组(JsonArray)、可以是一个Java的基本类型(JsonPrimitive)、当然也可以为null(JsonNull);JsonObject,JsonArray,JsonPrimitive,JsonNull都是JsonElement这个抽象类的子类。JsonElement提供了一系列的方法来判断当前的JsonElement

Json解析(使用Gson)

JsonObject对象可以看成 name/values的集合,而这写values就是一个个JsonElement,他们的结构可以用如下图表示:

Json解析(使用Gson)

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)
相关标签: Gson json