之前上Ajax的時候也有聽老師說過json,當時候略略地看網上的教程,感覺也沒什麼收穫,這次我想要認真地瞭解一下json,畢竟現在json這麼流行。
之前XML一直都是互聯網上傳輸結構化數據的事實標準,方便了服務器與服務器之間的通信,但是因爲有部分人覺得XML使用起來比較繁瑣,所以關於這個問題上提出了json,它是javascript的一個嚴格的子集,利用了javascript中的一些模式來表示結構化數據。其實總的來說就是爲了讓讀寫結構化數據有更好的方式而已,所以其實json它不是一種編程語言,它只是一種數據格式。正因爲只是數據格式,而不會僅僅只侷限於javascript,因爲很多編程語言都有針對json的解析器和序列化器的。它只不過與javascript有相似的語法而已。
json語法
json的語法是可以表示爲三種類型的值:
1.簡單值:簡單值中與javascript中的有相同的語法,我們可以在json中表示字符串,布爾值,數值,以及null。但是有一點需要注意的是:json是不支持javascript中的undefined的。
2.對象:對象是作爲一種複雜的數據類型,表示的是一組無序的鍵值對。而每個鍵值對的值都可以是簡單值或者複雜的數據類型。
3.數組:數組也是一種複雜的數據類型,它表示一組有序的值的列表,可以通過數值索引來訪問其中的值。數組的值也可以是任意類型--簡單值,對象或者數組。
json它僅僅是一種數據格式,所以它是不支持變量,函數或對象實例,它就是一種表示結構化數據的格式。
簡單值
最簡單的json數據形式就是簡單值了。
簡單值這個大家都應該清楚的,包括字符串,數值,布爾值,null。需要注意的是,json字符串是必須使用雙引號,單引號會導致錯誤的。
對象
json中的對象與javascript字面量稍微有些不同,我們來舉個例子:
var person={
name:"ben",
age:29
};
這個是在javascript中創建的對象字面量的標準方式,但是json中的對象要求給屬性加引號。雖然在javascript中我們也可以給屬性添加雙引號,這也是沒有錯誤的。下面我們來舉個關於json中的例子:
{
“name”:'Ben",
"age":29
}
這個例子可以與上述的例子進行比較,有兩個不一樣的地方,首先json是沒有聲明變量,因爲json是不支持變量的;第二個是json末尾是沒有分號的,因爲這個不是javascript語句,所以是不需要分號的。而且還有的是屬性一定要加雙引號,無論在什麼時候,都是必須的。
數組
json中第二種複雜的數據類型,json數組採用的是javascript中的數組的字面量形式。
例如以下是數組在javascript中數據的字面量:
var values=[25,"hi",true];
而在json中,我們可以採用同樣的語法表示聽一個數組的:
[25,"hi",true] 當然我們也是要注意的是json數組也是沒有變量和分號的。
通常來說,對象和數組常常是json數據結構的最外層的形式,利用他們我們可以創造出更多更復雜的數據結構。