1.概述
Javascript Object Notation
是一种轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由【属性值】或者【序列性的值】组成的【数据对象】。尽管【JSON】是【JavaScript】的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯
{
"firstName":"Tom",
"lastName":"Smith",
"sex":"male",
"age":23,
"married":false,
"address":
{
"streetAddress":" 21 2nd Street",
"city":"NewYork",
"state":"NY",
"postalCode":"1001"
},
"phoneNumber":
[
{
"type":"home",
"number":"158 8888 8888"
},
{
"type":"fax",
"number":"158 6666 6666"
}
]
}
2. 数据格式
JSON对象
JSON对象数组
2.1 JSON对象
{
"ID":001,
"name":"大力",
"age":24
}
特征:
1.数据形式——键值对形式
2.数据支持 字符串、数字、true false
3.{ } 大括号以内的数据
2.2 JSON对象数组
[
{
"ID":1,
"name":"张三",
"age":20
},
{
"ID":2,
"name":"李四",
"age":22
},
{
"ID":3,
"name":"王五",
"age":25
}
]
特征:
1.数据使用 [ ] 包含
2.在 [ ] 都是JSON格式对象
3.每一个对象之间使用都好隔开,但最后一个元素不需要加逗号
2.3 JSON数据验证
3.解析JSON格式工具
常用的工具:
Gson、fastjson、Jackson
以上都是第三方工具,需要导入对应的jar包
XML导包
3.1 FastJson内容
JSON核心类
JSON核心类提供解析和转化方法,用于解析JSON数据格式,同时用于转换类对象到JSON格式,该类对象需要符合JavaBean规范
- - | JSONArray
存在按照【键值对方式】解析获取数据,同时存在一定的List方法
- - | JSONObject
获取对应的类对象【指定键值对】对应数据的方法
3.2解析演示
/*
完成一个符合JavaBean规范的类
*/
public class Student {
private String name;
private Integer age;
//这里根据需要完成对应的Setter和getter方法
}
package *****;//包名
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.ir.CallNode;
import java.util.ArrayList;
import java.util.List;
/**
* @author Anonymous
* @description FastJson演示
* @date 2020/3/9 16:34
*/
public class Demo1 {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student stu = new Student("张伟", 16);
list.add(stu);
list.add(new Student("大力", 26));
list.add(new Student("海棠", 28));
list.add(new Student("美嘉", 33));
list.add(new Student("子乔", 35));
/*
JavaBean List ==> Json String
*/
String s = JSON.toJSONString(list);
System.out.println(s);
System.out.println("--------------------------------------");
/*
JavaBean Student类对象 ==> Json String
*/
String s1 = JSON.toJSONString(stu);
System.out.println(s1);
/*
Json String == Java Bean Student
*/
Student student = JSON.parseObject(s1, Student.class);
System.out.println(student);
/*
Json String ==> Json Object
*/
JSONObject jsonObject = JSON.parseObject(s1);
String name = jsonObject.getString("name");
System.out.println(name);
System.out.println(jsonObject.getInteger("age"));
/*
Json String ==> JsonArray
*/
JSONArray objects = JSON.parseArray(s);
System.out.println(objects);
for (Object object : objects) {
JSONObject jsonObject1 = (JSONObject) object;
System.out.println(jsonObject1.getString("name"));
System.out.println(jsonObject1.getInteger("age"));
}
Student object = objects.getObject(2, Student.class);
System.out.println(object);
System.out.println("--------------------------------------");
/*
JSONArray ==> JavaBean List集合
*/
List<Student> students = objects.toJavaList(Student.class);
for (Student student1 : students) {
System.out.println(student1);
}
// StudentMangaer ==> ArrayList ==> JSONString ==> 文件
// 文件 ==> 程序 ==> JSONString ==> JSONArray ==> ArrayList
System.out.println("--------------------------------------");
}
}