JSON語法可以分為三種類型:
簡單值
對象
數組
簡單值:
5 "Hello World"
JavaScript字符串與JSON字符串的最大區別在於,JSON字符串必須使用雙引號
對象:
JSON中的對象與JavaScript字面量稍微有一些不同。下面是一個JavaScript中的對象字面量
var person={ name:"Qianwei", age:22 }
這雖然是開發人員在JavaScript中創建對象字面量的標准方式,但JSON中的對象要求給屬性加引號。
{ "name":"Qianwei", "age":22 }
與JavaScript的對象字面量相比,JSON對象有兩個地方不一樣。首先,沒有申明變量(JSOn中沒有變量的概念)。其次,沒有末尾的分號(因為這不是JavaScript語句,所以不需要分號)。再說一遍,對象的屬性必須加引號,這在JSON中是必須的。屬性的值可以是簡單值,也已是復雜類型值。
{ "name": "Qianwei", "age": 22, "school": { "name": "anqing", "lOaction": "Anqing" } }
這個例子在頂級對象中嵌入了學校信息。雖然有兩個“name”屬性,但是是不一樣的。
數組:
JSON中的第二種復雜數據類型是數組。JSON數組采用的就是JavaScript中的數組字面量形式:
var value = [25,"hi",true]
在JSON中,可以采用同樣的語法表示同一個數組:
[{ "title": "Pro", "author": "Qianwe", "edition": 3, "year": 2100 }, { "title": "Pro", "author": "Qianwe", "edition": 4, "year": 2100 }, { "title": "Pro", "author": "Qianwe", "edition": 2, "year": 2100 } ]
解析和序列化:
可以把JSON數據結構解析為有用的JavaScript對象。
[{ "title": "Pro", "author": "Qianwe", "edition": 3, "year": 2100 }, { "title": "Pro1", "author": "Qianwe", "edition": 4, "year": 2100 }, { "title": "Pro2", "author": "Qianwe", "edition": 2, "year": 2100 } ] ------------------------------------------------------------ books[2].title //pro2
JSON對象:
JSON對象有兩個方法:stringify()和parse()。在最簡單的情況下,這兩個方法分別用於把JavaScript對象序列化為JSON字符串和把JSON字符串解析為原生的JavaScript值。
var books = { "title": "Pro", "author": "Qianwe", "edition": 4, "year": 2100 }; var jsonText = JSON.stringify(books); console.log(jsonText) //{"title":"Pro","author":"Qianwe","edition":4,"year":2100} console.log(typeof jsonText) //string
var books = { "title": "Pro", "author": "Qianwe", "edition": 4, "year": 2100 }; var jsonText = JSON.stringify(books); console.log(jsonText) //{"title":"Pro","author":"Qianwe","edition":4,"year":2100} console.log(typeof jsonText) //string var parseText = JSON.parse(jsonText); console.log(parseText) /* {title: "Pro", author: "Qianwe", edition: 4, year: 2100} author : "Qianwe" edition : 4 title : "Pro" year : 2100 __proto__ : Object */ console.log(typeof parseText) //object