Json解析(使用Gson)

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泛型
import com.google.gson.reflect.TypeToken
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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值