1.json语法规则
image.png
2.
js原生就支持json,可以对json对象直接操作
//sample.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var json = [
{
"empno": 7369,
"ename": "雪之下",
"job": "软件工程师",
"hiredate": "2017-05-12",
"salary": 13000,
"dname": "研发部"
},
{
"empno": 9527,
"ename": "比企谷",
"job": "客户经理",
"hiredate": "2017-04-12",
"salary": 15000,
"dname": "人力资源部",
"customers": [
{
"cname": "李东"
},
{
"cname": "李华"
}
]
}
];
console.log(json);
for(var i=0;i<json.length;i++){
var emp = json[i];
//document.write("<h1>");写到document页面上即html上
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);
if(emp.customers != null){
for(var j=0;j<emp.customers.length;j++){
document.write(emp.customers[j].cname);
}
}
document.write("</h1>");
}
</script>
</head>
<body>
</body>
</html>
输出结果:
image.png
3 JSON 与字符串互相转换
image.png
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
//====================str-->json====================================
//var json = {};//这是json
//var str = "{}";//这是字符串
var str = "{\"class_name\" : \"五年级一班\"}";
var json = JSON.parse(str);//JSON对象是由浏览器提供的,低版本IE浏览器如I8一下不支持
console.log(str);
console.log(json);
document.write("班级:" + json.class_name);
//====================json-->str====================================
var json1 = {"class_name":"五年Ⅳ班"};
var str1 = JSON.stringify(json1);
console.info(json1);
console.info(str1);
//下面可以用像对象那样创建json
var json2 = {};
json2.class_name = "三年A班";
json2.floor = "逸夫楼三层";
json.teacher = "王义夫";
console.info(json2);
</script>
</head>
<body>
</body>
</html>
输出结果:
image.png
4 JSON与Java交互
4.1 员工基本信息类
//Employee.java
package com.imooc.json;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
public class Employee {
@JSONField(name = "empnum") //序列化时,将此key改为 empnum
private Integer empno;
private String ename;
private String job;
//@JSONField(format="yyyy-MM-dd HH:mm:ss SSS") //使用fastjson提供的格式转换,解决输出为时间戳问题
@JSONField(format="yyyy-MM-dd")
private Date hdate;
private Float salary;
@JSONField(serialize = false) //转换为json字符串时对此项不进行序列化,即再json中删除
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;
}
}
4.2 java 对象 <-->json
//FastJsonSample1.java
package com.imooc.json;
import java.util.Calendar;
import com.alibaba.fastjson.JSON;
public class FastJsonSample1 {
public static void main(String[] args) {
Employee employee = new Employee();
employee.setEmpno(9527);
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());
}
}
4.3 java ArrayList <----> json
//FastJsonSample2.java
package com.imooc.json;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
public class FastJsonSample2 {
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);
}
//array--->json
String json = JSON.toJSONString(emplist);
System.out.println(json);
//json--->array
List<Employee> emps = JSON.parseArray(json,Employee.class);
for(Employee e:emps) {
System.out.println(e.getEmpno()+":"+e.getEname());
}
}
}