第1章 JSON介绍
1-1 JSON语法规则
JSON介绍
◆ JavaScript Object Notation(JavaScript对象表示法)
◆ JSON是轻量级的文本数据交互格式
◆ JSON独立于语言,具有自我描述性,更易于理解
(逐渐替代了xml)
{
"sites":
[
{"name":"XX网1","url":"www.xx1.com"},
{"name":"XX网2","url":"www.xx2.com"},
{"name":"XX网3","url":"www.xx3.com"}
]
}
JSON语法规则
◆ 数据由键(key)/值(value)描述,由逗号分隔
◆ 大括号代表一个完整的对象,拥有多个键/值对
◆ 中括号保存数组,多个对象之间使用逗号分隔
1-2 利用JSON存储员工信息
WebContent-New-File(emp.json后缀)
[
{
"empno": "001",
"ename": "JACK",
"job": "Software Engineer",
"hiredate": "2017-01-01",
"salary": "13000",
"dname": "R&D Deptment"
},
{
"empno": "002",
"ename": "ANDY",
"job": "Account Manager",
"hiredate": "2018-01-01",
"salary": "10000",
"dname": "Marketing Deptment",
"customers": [
{
"cname": "XiaoHong"
},
{
"cname": "XiaoLan"
}
]
}
]
1-3 Javascript访问JSON对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Javascript访问JSON对象</title>
<script type="text/javascript">
var json = [ {
"empno" : "1",
"ename" : "JACK",
"job" : "Software Engineer",
"hiredate" : "2017-01-01",
"salary" : "13000",
"dname" : "R&D Deptment"
}, {
"empno" : "2",
"ename" : "ANDY",
"job" : "Account Manager",
"hiredate" : "2018-01-01",
"salary" : "10000",
"dname" : "Marketing Deptment",
"customers" : [ {
"cname" : "XiaoHong"
}, {
"cname" : "XiaoLan"
} ]
} ];
//在浏览器控制台中对json内容进行输出
console.log(json);
for (var i = 0; i < json.length; i++) {
var emp = json[i];
document.write("<h1>");
document.write(emp.empno);
document.write("," + emp.ename);
document.write("," + emp.job);
document.write("," + emp.hiredate);
document.write("," + emp.salary);
document.write("," + emp.dname);
document.write("</h1>");
if (emp.customers != null) {
document.write("<h2>---");
for (var j = 0; j < json.length; j++) {
var customer = emp.customers[j];
document.write(customer.cname + ";");
}
}
}
</script>
</head>
<body>
</body>
</html>
1-4 JS中将字符串转为JSON
JSON与字符串互相转换
◆ JSON.parse()将字符串转化为JSON对象
◆ JSON.stringify()将JSON对象转化为字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>字符串转JSON</title>
<script type="text/javascript">
var str = "{\"class_name\":\"五年级三班\"}";
var json = JSON.parse(str);
console.log(str);
console.log(json);
document.write("班级:" + json.class_name);
</script>
</head>
<body>
</body>
</html>
1-5 JS中将JSON转为字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSON转为字符串</title>
<script type="text/javascript">
var json1 = {
"class_name" : "五年级三班"
};
var str1 = JSON.stringify(json1);
console.log(str1);
console.log(json1);
//初始换json
var json = {};
json2.class_name = "五年级五班";
json2.floor = "xx楼三层";
json2.teacher = "xxx";
console.info(json2);
</script>
</head>
<body>
</body>
</html>
第2章 FastJSON应用
FastJSON的介绍与下载安装
◆ Java的JSON工具包还有FastJson、Jackson、Gson、Json-lib…
◆ FastJson是阿里巴巴著名的JSON序列化与反序列工具包
◆ FastJson国内拥有大量的使用者,拥有API简单 效率高等优点
下载地址 github.
FastJSON对象序列化与反序列化
FastJSON序列化与JSON注解
实体类:
public class Employee {
private Integer empno;
private String ename;
private String job;
// 注解@JSONField(format = "yyyy-MM-dd HH:mm:ss SSS")
@JSONField(name = "hiredate", format = "yyyy-MM-dd")
private Date hdate;
private Float salary;
@JSONField(serialize = false) // 不进行序列化
private String dname;
public Integer getEmpno() {
return empno;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Date getHdate() {
return hdate;
}
public void setHdate(Date hdate) {
this.hdate = hdate;
}
public Float getSalary() {
return salary;
}
public void setSalary(Float salary) {
this.salary = salary;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
}
序列化和反序列化:
public static void main(String[] args) {
Employee employee = new Employee();
employee.setEmpno(4488);
employee.setEname("小王");
employee.setJob("客户经理");
employee.setSalary(10000f);
employee.setDname("市场部");
Calendar c = Calendar.getInstance();
c.set(2019, 0, 30, 0, 0, 0);
employee.setHdate(c.getTime());
// FastJSON中提供 了JSON对象,完成对象与JSON字符串的互相转换
String json = JSON.toJSONString(employee);
System.out.println(json);
//反序列化
Employee emp = JSON.parseObject(json, Employee.class);
System.out.println(emp.getEname());
}
```
**FastJSON对象数组序列化与反序列化**
```c
public static void main(String[] args) {
List emplist = new ArrayList();
for (int i = 1; i < 100; i++) {
Employee employee = new Employee();
employee.setEmpno(4488 + i);
employee.setEname("员工" + i);
emplist.add(employee);
}
// 序列化
String json = JSON.toJSONString(emplist);
System.out.println(json);
// 反序列化
List<Employee> emps = JSON.parseArray(json, Employee.class);
for (Employee e : emps) {
System.out.println(e.getEmpno() + ":" + e.getEname());
}
}
```
## 笔记跟源码来源:慕课网,Java实战课程 链接: [慕课网](https://www.imooc.com/).