#一篇文章弄懂JSON和FastJSON
JSON介绍
- JavaScript Object Notation(JavaScript对象表示法)
- JSON是轻量级的文本数据交换格式
- JSON独立于语言,具有自我描述性,更易理解
JSON语法规则
- 数据由键(key)/值(value)描述,由逗号分隔
- 大括号代表一个完整的对象,拥有多个键/值对
- 中括号保存数组,多个对象之间使用逗号分隔
利用JSON存储员工信息:
[
{
"empno": 1234,
"ename": "Ndon",
"job": "Professor",
"hiredate": "2015-07-10",
"salary": "10000",
"dname": "研发部"
},
{
"empno": 1235,
"ename": "Mingyueji",
"job": "Associate Professor",
"hiredate": "2014-07-10",
"salary": "100000",
"dname": "Medicine",
"customer": [
{
"cname": "Iris"
},
{
"cname": "Nick"
}
]
}
]
JavaScript访问JSON对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var json = [
{
"empno": 1234,
"ename": "Ndon",
"job": "Professor",
"hiredate": "2015-07-10",
"salary": "10000",
"dname": "研发部"
},
{
"empno": 1235,
"ename": "Mingdong",
"job": "Associate Professor",
"hiredate": "2014-07-10",
"salary": "100000",
"dname": "Medicine",
"customer": [
{
"cname": "Iris"
},
{
"cname": "Nick"
}
]
}
];
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>");
document.write("<h1>");
if(emp.customer != null){
for(var j = 0;j<emp.customer.length;j++){
document.write(emp.customer[j].cname+".")
}
}
}
</script>
</head>
<body>
</body>
</html>
JSON与字符串互相转换
- JSON.parse()方法将字符串转换为JSON对象
- JSON.stringify()方法将JSON对象转换为字符串
JS中字符串和JSON之间相互转换:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>字符串转JSON</title>
<script type="text/javascript">
var str = "{\"Class_name\":\"1403\"}";
var json = JSON.parse(str)
var str1 = JSON.stringify(json);
console.log(str)
console.log(json)
document.write("My Class:"+ json.Class_name)
document.write("My new String :"+str1)
var json1 = {}
json1.Class_name = "五年级2班"
json1.teacher = "Wuyun"
json1.floor = "二楼"
console.log(json1)
</script>
</head>
<body>
</body>
</html>
FastJSON
-
最新版下载地址:https://search.maven.org/remote_content?g=com.alibaba&a=fastjson&v=LATEST
-
为什么要用FastJSON? JSON与Java交互
-
Java的JSON工具包还有FastJson、Jackson、 Gson. Json-lb…
-
FastJson是阿里巴巴著名的JSON序列化与反序列工具包
-
FastJson国内拥有大量使用者,拥有API简单,效率高等优点
Debug
FastJSON中对象序列化与反序列化
Employee.java
package com.bayar.employee;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
public class Employee {
private Integer empno;
private String ename;
private String job;
@JSONField(name="入职时间", format="yyyy-MM-dd")
private Date hiredata;
private Float salary;
//某一项无关紧要,不想序列化时用@JSONField(serialize=false)
@JSONField(serialize=false)
private String dname;
public Integer getEmpno() {
return empno;
}
public String getEname() {
return ename;
}
public String getJob() {
return job;
}
public Date getHiredata() {
return hiredata;
}
public Float getSalary() {
return salary;
}
public String getDname() {
return dname;
}
public void setEmpno(Integer empno) {
this.empno = empno;
}
public void setEname(String ename) {
this.ename = ename;
}
public void setJob(String job) {
this.job = job;
}
public void setHiredata(Date hiredata) {
this.hiredata = hiredata;
}
public void setSalary(Float salary) {
this.salary = salary;
}
public void setDname(String dname) {
this.dname = dname;
}
}
JSON和对象之间互转
FastJsonExample.java
package com.bayar.employee;
import java.util.Calendar;
import com.alibaba.fastjson.JSON;
public class FastJSONexample {
public static void main(String[] args) {
Employee employee = new Employee();
employee.setEmpno(10000);
employee.setEname("Bayar");
employee.setJob("Front-End");
employee.setDname("Techno");
Calendar c = Calendar.getInstance();
c.set(2021, 7, 20, 18, 42);
employee.setHiredata(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中对象数组序列化与反序列化
操作列表
package com.bayar.employee;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
public class FastJSONExample2 {
public static void main(String[] args) {
List empList = new ArrayList();
for(int i = 0;i<=100;i++) {
Employee emp = new Employee();
emp.setEmpno(1000+i);
emp.setEname("员工"+i);
empList.add(emp);
}
//toJSONString即可操作单一对象,也可操作列表
String json = JSON.toJSONString(empList);
System.out.println(json);
//JSON转成对象数组
List<Employee> emps = JSON.parseArray(json, Employee.class);
for (Employee employee : emps) {
System.out.println(employee.getEmpno()+":"+employee.getEname());
}
}
}