首頁  >  文章  >  web前端  >  JSON相關知識總結_json

JSON相關知識總結_json

WBOY
WBOY原創
2016-05-16 15:51:371115瀏覽

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  
以上所述就是本文的全部內容了,希望大家能夠喜歡。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn