IMOOC个人笔记 JSON基础
JSON介绍:
JSON语法规则:标准案例:
1.{}代表里面这段完整的代码是一个对象,可以被JavaScript直接识别。
2.“sites"是一个键,是将来提取数据时的关键字。
3.[]表示数组。
上图的数组包含了三个网站的信息。每一个网站都是一个标准的JavaScript对象,也是由大括号进行包裹,其中有两个键值对,“键”:“值”。JSON中键和值都是用”"进行包裹,多个键值对使用 , 进行分割。JSON与字符串的互相转换:
JSON是浏览器内置对象,可以用JavaScript直接调用。JSON是一个比较新的对象,对于IE8以下的版本是不支持的。
JS中将字符串转为JSON 案例:运行结果:
JS中JSON转为字符串 案例:
运行结果:
JSON与JAVA交互
JSON序列化工具包:把Java对象转化为JSON或者把JSON转化为Java对象,这样的第三方组件成为JSON工具包。
常用的JSON工具包:FastJson:
下载:
FastJSON对象序列化与反序列化案例:
Employee.java
package com.imooc.json;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
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;
}
}
FastJsonSample1
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(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);
//JSON转化为对象
Employee emp = JSON.parseObject(json, Employee.class);
System.out.println(emp.getEname());
}
}
其中FastJSON提供的注解:
@JSONField(name = “hiredate” , format=“yyyy-MM-dd”) 用于格式化Date类型数据,name属性为输出的key的名字
@JSONField(serialize = false) 如果有不想进行json序列化的属性可以使用该注解。false=不进行序列化操作。
运行结果:
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);
}
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());
}
}
}
运行结果: