Java Web进阶(1) -- JSON入门

第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/).
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值