Gson解析

本文深入探讨了JSON数据的基本概念、使用方法以及如何通过Java将对象转化为JSON字符串和从JSON字符串解析为Java对象的过程。重点介绍了Gson库在JSON数据操作中的应用,包括将Java对象格式化为JSON字符串、JSON字符串解析成Java对象、JSON解析成List和Map等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.json简介

Json 以 key-value的形式存储数据;
Key的取值 为 `String` 类型;
Value的取值 为 `String`,`boolean`,`Number`,`数组`,`Object`,`null`;
Json 串 以 `{` 开始, 以 `}` 结尾;
Json 串中 `数组` 是 以 `[` 开始, 以 `]` 结尾;
Json 串中 `Object` 是 以 `{` 开始, 以 `}` 结尾;

2.使用

将 java 对象 格式化为 Json 字符串.

//1. 获得需要的对象:

			Student stu = new Student();
			stu.setName("张三");
			stu.setAge(18);
			stu.setSex(true);

	//2. 格式化

			Gson gson = new Gson();
			//将 对象 转化成 json 字符串
			String json = gson.toJson(stu)

将 Json 字符串 解析 成 java 对象

Gson 的 节点对象:_
`JsonElement` : 所有的节点 都是 JsonElement 对象.

`JsonPrimitive` : 基本的 数据类型的 节点 对象, JsonElement 的子类.

`JsonNull` : 代表 空节点 对象,即 有 key,value 为空,JsonElement 的子类.

`JsonObject` : 对象 数据类型的 节点 对象, JsonElement 的 子类.

`JsonArray` : 数组 数据类型的 节点 对象, JsonElement 的 子类.

//* __Json的解析成 java 对象__

	//json:

	//	{'name':'张三','age':18,'sex':true}	

	//代码:

		Gson gson = new Gson();
		// 将json 转化成 java 对象
		Student stu = gson.fromJson(json, Student.class);

//* __Json 解析 成 List__		
	
	//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();
		// 将 json 转化 成 List泛型
		List<Student> stus = gson.fromJson(json, new TypeToken<List<Student>>() {}.getType());
	

//* __Json 解析 成 map__

	//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();
		// 将 json 转化 成 Map泛型
		Map<String,Student> map = gson.fromJson(json, new TypeToken<Map<String,Student>>() {}.getType());
//Json 节点 的解析__
	
	//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

			// 获得 flag 节点的值, flag 节点为基本数据节点
			JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
			// 基本节点取值
			boolean flag = flagJson.getAsBoolean();

			// 获得 data 节点的值,data 节点为Object数据节点
			JsonObject dataJson = root.getAsJsonObject("data");
			// 将节点上的数据转换为对象
			Student stu = new Gson().fromJson(dataJson,Student.class);

获得data的方法可以改为:

JSONObject object = new JSONObject(arg0);

object.getString("data")


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值