本文給大家匯總了一下關于json的相關的知識點,從基礎到示例,非常全面,有需要的小伙伴可以參考下。
JSON:JavaScript 對象表示法(JavaScript Object Notation)
JSON 語法規則
數據在名稱/值對中
數據由逗號分隔
花括號保存對象
方括號保存數組
JSON有6種類型的值:
對象、數組、字符串、數字、布爾值、null
JSON對象是一個容納“名/值”對的無序集合
名字:任意字符串
值:任意類型的JSON值,包括數組和對象(對象中可以嵌入對象)
注:JSON字符串必須使用雙引號(單引號會報錯)
一、對象
javascript中創建字面量:
- var object = {
- name:"lily",
- age:22
- };
或者:
- var object = {
- "name":"lily",
- "age":22
- };
JSON:
- {
- "name":"lily",
- "age":22
- }
二、數組
JSON數組采用的是javascript中數組字面量形式
擴展:
把數組和對象結合起來可以構成更復雜的數據結合
例如:
- [
- {
- "name":"lily",
- "age":22,
- "job":"docter"
- },
- {
- "name":"nicy",
- "age":21,
- "job":"teacher"
- },
- {
- "name":"lily",
- "age":22,
- "job":"AE"
- }
- ]
三、解析與序列化
JSON擁有和javascript類似的語法,可以把JSON數據結構解析為有用的javascript對象
1.JSON對象
收發JSON數據
讀取、寫入、發送和接收JSON數據對象時,需要轉換成字符串,并能從字符串轉換為JSON數據對象。(用于javascript相同的方式讀寫他們)
JSON對象有兩個方法:
① stringify(): 把javascript對象序列化為JSON字符串
② parse(): 把JSON字符串解析為原生的javascript值
實例:
- var book = {
- title:"professional JavaScript",
- authors:[
- "lily"
- ],
- edition:3,
- year:2011
- };
- var jsonText = JSON.stringify(book);
- alert(jsonText); //{"title":"professional JavaScript","authors":["lily"],"edition":3,"year":2011}
- alert(typeof jsonText); //string
- var bookCopy = JSON.parse(jsonText);
- alert(typeof bookCopy); //object
這個例子中使用JSON.stringify()把一個javascript對象book序列化為一個JSON字符串,然后保存到jsonText中;將JSON字符串jsonText直接傳給JSON.parse()就得到了相應的javascript值
注:序列化javascript對象時,最終值都是有效JSON數據類型的實例屬性,任何無效的值都會被跳過
2.序列化選項
JSON.stringify()在序列化javascript對象時,可以接收兩個參數
參數一:過濾器,可以是一個數組或函數
參數二:一個選項,表示是否在JSON字符串中保留縮進
1)過濾結果
如果過濾器的參數是數組,那么JSON.stringify()的結果中只包含數組中列出的屬性
例如:
- var book = {
- "title":"professional JavaScript",
- "authors":[
- "lily"
- ],
- edition:3,
- year:2011
- };
- var jsonText = JSON.stringify(book,["title","edition"]);
- alert(jsonText); //{"title":"professional JavaScript","edition":3}
- alert(typeof jsonText); // string
2)字符串縮進:
JSON.stringify()方法的第三個參數用于控制結果中的縮進和空白符
3)toJSON()方法
給對象定義toJSON()方法,可以返回其自身的JSON數據格式
四、JSON訪問值
第一種:簡單數組
['item1','item2','item3']
取值:通過數字索引訪問嵌入的值(第一項的索引為0)
['item1','item2','item3']
var items = ['item1','item2','item3'];
alert(items[0]); // item1
第二種:使用{}表示對象和符合數組
{ "key":"value" }
取值:通過鍵名訪問嵌入的值
var oExample = { "name":"lily" };
alert(oExample.name); // lily
alert(oExample["name"]); // lily
使用這兩種方式,可以用子記錄(帶命名的或數值的索引鍵)描述很多數據結構:
例如:
- var oNovelist = {
- "firstName":"lily",
- "lastName":"russ",
- "novels":
- [
- {
- "title":"and choas died",
- "year":"1970"
- },
- {
- "title":"the famale man",
- "year":"1976"
- }
- ]
- };
- var msg = oNovelist.firstName+" "+oNovelist.lastName+"'s"+" "+oNovelist.novels[0].title+" "+"was published in"+oNovelist.novels[0].year;
- alert(msg); // lily russ's and choas died was published in1970
以上所述就是本文的全部內容了,希望大家能夠喜歡。
新聞熱點
疑難解答
圖片精選