JSON
JavaScript Object Notation(JavaScript 對象表示法);
JSON是輕量級的文本數(shù)據(jù)交換格式诉字;
JSON獨立于語言懦尝,具有自我描述性,更易理解壤圃;
JSON語法規(guī)則
- 數(shù)據(jù)由鍵(key)/值(value)描述陵霉,由逗號分隔
- 大括號代表一個完整的對象,擁有多個鍵/值對
- 中括號保存數(shù)組伍绳,多個對象之間使用逗號分隔
{
"site":[
{"name":"慕課網(wǎng)", "url":"www.imooc.com"},
{"name":"百度", "url":"www.baidu.com"},
{"name":"網(wǎng)易", "url":"www.163.com"}
]
}
JSON與字符串相互轉(zhuǎn)換
- JSON.parse()方法將字符串轉(zhuǎn)換為JSON對象
- JSON.stringify()方法將JSON對象轉(zhuǎn)換為字符串
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
<!--JS中將字符串轉(zhuǎn)換成JSON-->
var str = "{\"class_name\" : \"五年級一班\"}";
var json = JSON.parse(str);
console.log(str);
console.log(json);
document.write("班級:" + json.class_name + "<br>");
<!--JS中將JSON轉(zhuǎn)換成字符串-->
var json2 = {"class_name" : "五年級二班"};
var str2 = JSON.stringify(json2);
console.info(json2);
console.info(str2);
document.write(str2 + "<br>");
<!--JS中JSON對象初始化-->
var json3 = {};
json3.class_name = "五年級三班";
console.log(json3);
document.write("班級:" + json3.class_name);
</script>
</head>
<body>
</body>
</html>
JSON與Java交互
- Java的JSON工具包還有FastJson踊挠、Jackson、Gson冲杀、Json-lib...
- FastJson是阿里巴巴著名的JSON序列化與反序列工具包
- FastJson國內(nèi)擁有大量使用者效床,擁有API簡單,效率高等優(yōu)點
FastJSON對象序列化與反序列化
Employee.java
package demo;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
public class Employee {
@JSONField(serialize = false) //serialize屬性:不對該成員序列化
private int empId;
private String empName;
@JSONField(name = "hiredate", format = "yyyy-MM-dd") //JSON注解权谁,name屬性:說明key剩檀,format屬性:將日期格式化
private Date empIn;
public int getEmpId() {
return empId;
}
public void setEmpId(int empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Date getEmpIn() {
return empIn;
}
public void setEmpIn(Date empIn) {
this.empIn = empIn;
}
public Employee(int empId, String empName, Date empIn) {
super();
this.empId = empId;
this.empName = empName;
this.empIn = empIn;
}
@Override
public String toString() {
return "Employee [empId=" + empId + ", empName=" + empName + ", empIn=" + empIn + "]";
}
}
FastJsonSample.java
package demo;
import java.util.Calendar;
import com.alibaba.fastjson.JSON;
public class FastJsonSample {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(2019, 1, 24);
Employee emp = new Employee(007, "星海", c.getTime());
String json = JSON.toJSONString(emp); //將Java對象轉(zhuǎn)換成JSON字符串
System.out.println(json);
Employee emp2 = JSON.parseObject(json, Employee.class); //將JSON字符串轉(zhuǎn)換成Java對象
System.out.println(emp2);
}
}
控制臺輸出:
{"empName":"星海","hiredate":"2019-02-24"}
Employee [empId=0, empName=星海, empIn=Sun Feb 24 00:00:00 CST 2019]
FastJSON對象數(shù)組序列化與反序列化
-
JSON.toJSONString(list)
將對象數(shù)組序列化 -
JSON.parseArray(json, Employee.class)
將JSON數(shù)組反序列化