Java创建和读写JSON数据(使用Gson)基础

1.JSON简介

JSON官方网站

JSON:JavaScript对象表示法(JavaScript Object Notation)。
JSON是储存和交换文本信息的语法。

  • JSON是轻量级的文本数据交换格式
  • JSON独立于语言和平台
  • JSON具有自我描述性,更易理解

2.JSON与XML

类似XML,比XML更小、更快、更易解析。

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 使用数组
  • 不使用保留字

3.JSON语法

JSON语法是JavaScript对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

JSON值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true或false)
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

4.GSON官方GitHub

点击这里

5.java读取JSON数据

5.1.第一步要先创建一个JsonParser

		JsonParser parser = new JsonParser();

5.2.观察json格式,由外向内解析,例如解析如下json文本

{
	"class": "101",
	"student": [
		{
			"name": "张三",
			"sex": 1
		},
		{
			"name": "李四",
			"sex": 1
		},
		{
			"name": "王五",
			"sex": 0
		}
	],
	"Good": true
}

最外层为花括号{ },解析花括号{ },要定义一个JsonObject接收解析结果:

		JsonParser parser = new JsonParser();
		String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
		
		JsonObject object = (JsonObject) parser.parse(str);

这里要注意:如果解析一段json字符串,存放变量时不要忘记转义符号,一般在IDE内粘贴自带转义。

5.3.获取"class"值和"Good"值

		JsonParser parser = new JsonParser();
		String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
		JsonObject object = (JsonObject) parser.parse(str);
		
		String classname = object.get("class").getAsString();
		boolean good = object.get("NB").getAsBoolean();

先从JsonObject对象中使用get(String s)方法获得json中名为s的值,然后根据值的类型,再使用getAs类型名()方法获得值。

5.4.获取"student"值

通过观察发现,student的值为数组[ ],解析方括号[ ],要定义一个JsonArray接收解析结果:

		JsonParser parser = new JsonParser();
		String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
		JsonObject object = (JsonObject) parser.parse(str);
		String classname = object.get("class").getAsString();
		boolean good = object.get("NB").getAsBoolean();

		JsonArray array = object.get("student").getAsJsonArray();

先从JsonObject对象中使用get(“student”)方法获得json中名为student的值,然后因为是json数组,所以使用getAsJsonArray()方法获得值,取到的是一个JsonObject的数组,我们还需要遍历数组去解析

		JsonParser parser = new JsonParser();
		String str = "{\"class\":\"101\",\"student\":[{\"name\":\"张三\",\"sex\":1},{\"name\":\"李四\",\"sex\":1},{\"name\":\"王五\",\"sex\":0}],\"Good\":true}";
		JsonObject object = (JsonObject) parser.parse(str);
		String classname = object.get("class").getAsString();
		boolean good = object.get("NB").getAsBoolean();
		JsonArray array = object.get("student").getAsJsonArray();

		for (int i = 0; i < array.size(); i++) {
			JsonObject student = array.get(i).getAsJsonObject();
			String name = student.get("name").getAsString();
			int sex = student.get("sex").getAsInt();
			System.out.println(name+"\t"+sex);
		}

6.java创建JSON数据

如果想要创建一个这样的json文本:

{
	"class": "101",
	"student": [
		{
			"name": "张三",
			"sex": 1
		},
		{
			"name": "李四",
			"sex": 1
		},
		{
			"name": "王五",
			"sex": 0
		}
	],
	"Good": true
}

通过解析的原理,我们可以这样创建

		JsonObject object = new JsonObject();
		object.addProperty("class", "101");// 添加class元素

		JsonArray array = new JsonArray();//新建JsonArray数组

		JsonObject student1 = new JsonObject();
		student1.addProperty("name", "张三");
		student1.addProperty("sex", 1);
		array.add(student1);//将JsonObject添加到JsonArray中

		JsonObject student2 = new JsonObject();
		student2.addProperty("name", "李四");
		student2.addProperty("sex", 1);
		array.add(student2);

		JsonObject student3 = new JsonObject();
		student3.addProperty("name", "王五");
		student3.addProperty("sex", 0);
		array.add(student3);

		object.add("student", array);//添加student元素

		object.addProperty("Good", true);// 添加Good元素

		System.out.println(object);
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值