JSON 語法規則

admin發表於2018-07-27

JSON 介紹一章節對JSON在總體上進行了簡單的介紹。

JSON是一種資料傳輸格式,也就是對字串在語法上的約定。

它是JavaScript的子集,所以任何JSON格式資料都是合法的JavaScript表示式。

上面關於子集的表述在之前並不完全正確,有些許個例,但是此問題當前已經被修復。

一.準備工作:

JavaScript中,一切皆為物件(可能不是太精確,但是大致可以如此認為)。

支援的型別都可以用JSON表示,比如字串、數值、null、物件和陣列。

但是也有不支援的型別,比如undefined、function函式和Symbol,具體參閱JSON.stringify()一章節。

二.JSON語法:

應用中,最為常見的JSON是物件與陣列或者它們之間的巢狀格式的。

1.鍵值對結構:

書寫規則如下:

(1).每組資料是由鍵值對構成。

(2).鍵必須用雙引號包裹。

(3).鍵與值之間用冒號分割。

(4).值如果是字串,必須用雙引號包裹。

(4).鍵值對之間用逗號分割。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
{
  "webName":"螞蟻部落",
  "url":"softwhy.com",
  "age":2
}

上面是合法的JSON字串,再來看如下程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
{
  'webName':"螞蟻部落",
  "url":undefined,
  "age":5
}

上述JSON格式字串是錯誤的,分析如下:

(1).雖然在JavaScript中單雙引號都是可以的,但是在JSON中只能使用雙引號。

(2).undefined在物件直接量格式中是不被支援的,會被忽略,不被支援的含有函式和Symbol。

看如下程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let ant={
  'webName':"螞蟻部落",
  "url":undefined,
  "age":5
}
console.log(JSON.stringify(ant));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201907/12/012202l7w6kkjspwra7wrw.jpg\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

可以看到單引號變成了雙引號,undefined直接被忽略。

2.陣列結構:

陣列結構資料和上面同理,只不過陣列資料要寫在方括號中。首先看一段程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
["螞蟻部落",5,"青島市南區"]

上述就是一個陣列結構的JSON字串,就是陣列的字串形式。

我們知道陣列中可以巢狀資料型別,比如物件直接量,下面是將其轉換為JSON資料後的結構:

[JavaScript] 純文字檢視 複製程式碼
{
  "web": [
    { "webName":"螞蟻部落" , "url":"softwhy.com" },
    { "webName":"網易" , "url":"163.com" }
  ]
}

操作原理是一樣的,鍵需要用雙引號包裹,不支援的資料會被忽略。

當然還有許多細節,本文不做介紹,具體參閱JSON.stringify()一章節。

三.關聯方法:

通過JSON.stringify() 方法可以將引數轉換為JSON資料,也可以通過JSON.parse()方法將JSON資料還原。

JSON是ES5新增物件,僅有上述兩個方法,專注於對JSON資料的處理,恰如其名。

(1).JSON.stringify()參閱JSON.stringify()一章節。

(2).JSON.parse()參閱JSON.parse()一章節。

相關文章