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

JSON数据格式与Java操作JSON数据

  • 1.JSON简介
  • 2.JSON与XML
  • 3.JSON语法
  • 4.GSON官方GitHub
  • 5.java读取JSON数据
    • 5.1.第一步要先创建一个JsonParser
    • 5.2.观察json格式,由外向内解析,例如解析如下json文本
    • 5.3.获取"class"值和"Good"值
    • 5.4.获取"student"值
  • 6.java创建JSON数据

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);

你可能感兴趣的:(公共)