第十五次总结 JSON
- 什么是JSON?
- GSON如何解析JSON文件?
- 如何使用第三方的工具库?
1.什么是JSON?
JSON : JavaScript Object Notation
javaScript 用于数据传输的一种格式
JSON数据的格式:
用一对大括号表示JSON对象,
大括号中由多个名值对组成,每个名值对之间用 逗号 隔开
名和值之间用 冒号 隔开
同一个JSON对象内部的名字不能重复的,值可以重复
JSON的名字是一个字符串
JSON的值可以是 数字,字符串,JSON对象,数组,可以是boolean值
{名:值,名:值,名:值,名:值}
案例:
{ "num":1234, "name":"张三", "age":20, "tel":{"zuoji":"0731-88889999","mobile":"13888889999"}, "aihao":["篮球","游戏","游泳"], "aa":[{},{},{}] }
JSON数组
[{},{},{}]
JSON数据的解析:
在JavaScript中可以直接解析
在Java中默认是没有JSON的解析器的
如果需要在Java中解析JSON,就需要下载第三方的解析器
GSON Google公司开发的JSON解析器
fastjson 阿里巴巴提供的JSON解析器
2.GSON如何解析JSON文件?
JSON文件内容

Student类
public class Student { private int age; private String name; private int num; private String sex; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "Student{" + "age=" + age + ", name='" + name + '\'' + ", num=" + num + ", sex='" + sex + '\'' + '}'; } }
如何取得一个JSON对象?
JosnPaser类
public class JsonPaser { public static void main(String[] args) throws Exception { //要解析的Json文件地址 File f = new File("xml/stus.json"); FileReader reader = new FileReader(f); //创建Gson解析器对象 Gson gson = new Gson(); //将JSON数据转换成Java对象 Student stu = gson.fromJson(reader, Student.class); System.out.println(stu); } }
输出结果:

如果是上诉代码能否获得JSON数组?
JSON文件

输出结果:
JOSN语法错误

希望找到的是一个对象但是找到的是一个数组

如何取得一个JSON数组?
JosnPaser类
public class JosnPaser { public static void main(String[] args) throws Exception { //要解析的Json文件地址 String path = "D:\\idea11\\untitled\\解析\\src\\JSONC\\Demo1.json"; File file = new File(path); FileReader reader =new FileReader(file); //创建Gson解析器对象 Gson gson = new Gson(); //将JSON数组数据转换成Java数组对象 ArrayList<Student> msg=gson.fromJson(reader,ArrayList.class); System.out.println(msg); } }
输出结果:
![]()
是否可以实现数组的遍历?
ArrayList<Student> msg=gson.fromJson(reader,ArrayList.class); for (Student stu : msg){ System.out.println(stu); }
输出结果:
当试图将对象强制转换为不是实例的子类时抛出 ClassCastException
LickedTreeMap 不能 实例为 Student 类型

同样可以获得JSON数组
//将JSON数组数据转换成Java数组对象 ArrayList<LinkedTreeMap> msg=gson.fromJson(reader,ArrayList.class); System.out.println(msg); }
如何将java中的数组对象写成Josn格式?
JosnPaser类
ArrayList<Student> list = new ArrayList<>(); for (int i = 0; i < 5; i++) { Student s = new Student(); s.setNum(i); s.setName("名字" + i); s.setAge(10 + i); s.setSex(i % 2 == 0 ? '男' : '女'); list.add(s); } //将Java中的数组对象写成Json格式 String msg = gson.toJson(list); //字符流 FileWriter writer = new FileWriter(f); writer.write(msg); //关流 writer.flush(); ArrayList<Student> list1 = gson.fromJson(reader, ArrayList.class); System.out.println(list1);
输出结果:

3.如何使用第三方的工具库?
idea
a.下载第三方资源
b.在idea中引入jar包
在模块中新建一个文件夹,一般命名为lib
将gson.2.8.6.jar拷贝到lib文件夹中
File->Project Structure
在对话框中选择左边的 Libraries
点击 +
选择 Java
在弹出框中选择gson.2.8.6.jar
在新的对话框中选择要使用jar包的模块
Eclipse
c.在Eclipse中引入jar包
在工程中新建文件夹lib
将gson.2.8.6.jar拷贝到lib文件夹中
鼠标右键选中jar包-->Build Path --> Add to Build Path

浙公网安备 33010602011771号