javascript
JSON学习
文章目錄
- JSON
- 一:JSON簡介
- 1.什么是JSON?
- 2.JSON語法規則:
- 3.利用json存儲員工信息表:
- 4.Javascript訪問JSON對象
- 5.JS中將字符串轉換為JSON
- 6.JS中將JSON轉換為字符串
- 二:FastJSON應用
- 1.FastJSON的介紹與下載安裝:
- 2.FastJSON對象序列化與反序列化
- 3.FastJSON對象數組序列化與反序列化
- 4.什么是JavaBean?
JSON
一:JSON簡介
1.什么是JSON?
- JavaScript Object Notation(JavaScribt對象表示法)
- JSON是輕量級的文本數據交換格式
- JSON 獨立于語言,具有自我描述性,更易理解
2.JSON語法規則:
-
數據由健(key)/值(value)成對描述,由逗號分割
-
大括號代表一個完整的對象,擁有多個健/值對
-
中括號保存數組,多個對象之間使用逗號分隔示例:(鍵和值都用雙引號包裹,多個鍵值對使用逗號分隔)
3.利用json存儲員工信息表:
[{"empno": 7369,"ename": "李寧","job": "軟件工程師","hiredate": "2017-05-12","salary": 13000,"dname": "研發部"},{"empno": 7499,"ename": "王樂","job": "客戶經理","hiredate": "2017-04-22","salary": 10000,"dname": "市場部","customers": [{"cname": "李東"},{"cname": "劉楠"}]} ]4.Javascript訪問JSON對象
javascript天然支持json格式,可以把json內容粘貼到html里的script。
<!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": 7499,"ename": "王樂","job": "客戶經理","hiredate": "2017-04-22","salary": 10000,"dname": "市場部","customers": [{"cname": "李東"},{"cname": "劉楠"}]}];//在瀏覽器控制臺中對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 < emp.customers.length ; j++){var customer = emp.customers[j];document.write(customer.cname + ",")}document.write("</h2>")}} </script> </head> <body></body> </html>5.JS中將字符串轉換為JSON
JSON與字符串互相轉換:
- JSON.parse()方法將字符串轉化為JSON對象
- JSON.stringify()方法,將JSON對象轉換為字符串
注意:JSON對象,是瀏覽器內置對象(ie8以下版本瀏覽器不支持),javascript可以直接調用
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>字符串轉JSON</title><script type="text/javascript">var str = "{\"class_name\":\"五年級四班\"}";//str.enamevar json = JSON.parse(str);console.log(str);console.log(json);document.write("班級:" + json.class_name);</script> </head> <body></body> </html>6.JS中將JSON轉換為字符串
-
JS提供了一個方法JSON.parse()方法將字符串轉換為JSON對象,用的很多,主要是與Ajax配合。
-
JSON.stringify()方法將JSON對象轉換為字符串。JSON對象JavaScript可以直接調用,用的比較少。
二:FastJSON應用
1.FastJSON的介紹與下載安裝:
JSON與Java交互:
- Java的JSON工具包還有FastJson(國內阿里巴巴開發)、Jackson、Gson(谷歌開發)、Json-lib
- FastJson是阿里巴巴著名的JSON序列化與反序列工具包
- FastJson國內擁有大量使用者,擁有API簡單,效率高等優點
下載方式:
通過github下載:fastjson-1.2.52;
2.FastJSON對象序列化與反序列化
序列化與反序列化:
- Java序列化就是指把Java對象轉換為字節序列的過程。
- Java反序列化就是指把字節序列恢復為Java對象的過程。
JSON注解:
-
@JSONField(format=“yyyy-MM-dd HH:mm:ss SSS”):以年-月-日 時-分-秒 毫秒的格式輸出日期;
-
@JSONField(name="")將此注解標記的屬性的名稱修改為name后面的內容;
-
@JSONField(serialize = false)對此注解標記的屬性不做序列化操作(JSON字符串中不會轉換該屬性);
實體類:
package json;import com.alibaba.fastjson.annotation.JSONField;import java.util.Date;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;}}測試代碼:
package json;import com.alibaba.fastjson.JSON;import java.util.Calendar;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);Employee emp = JSON.parseObject(json, Employee.class);System.out.println(emp.getEname());} }3.FastJSON對象數組序列化與反序列化
package json;import com.alibaba.fastjson.JSON;import java.util.ArrayList; import java.util.List;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());}} }4.什么是JavaBean?
簡單籠統的說JavaBean是一種符合一定規范編寫的Java類,它不是一種技術,而是一種規范 , 表達實體和信息的規范。大家針對這種規范,總結了很多開發技巧、工具函數。符合這種規范的類,可以被其它的程序員或者框架使用。
它的方法命名,構造及行為必須符合特定的約定:
1、這個類必須具有一個公共的(public)無參構造函數;
2、所有屬性私有化(private);
3、私有化的屬性必須通過public類型的方法(getter和setter)暴露給其他程序,并且方法的命名也必須遵循一定的命名規范。
4、這個類應是可序列化的。(比如可以實現Serializable 接口)
Employee就是一個JavaBean,它表達了一個員工所包含的信息,例如編號、名稱、崗位、入職時間等信息,描述了一個員工的基本信息。
總結
- 上一篇: 一文总结十大经典排序算法(思维导图 +
- 下一篇: JS 射击游戏