JSON,JSON 字串,JSON 資料型別介紹

我被程式碼海扁 @codebeatme
閱讀 4:09·字數 1249·發佈 

JSON

JSON(JavaScript Object Notation)是一種輕量級的資料格式,是 JavaScript 語言的一個子集。JSON 在各種程式設計語言中得到了廣泛支援,並被普遍的運用到各種業務場景。

JSON 支援的資料型別

JSON 支援一些基本的 JavaScript 資料型別,包括數值型別,字串型別,布林型別,空值,陣列,物件。至於更為複雜的資料型別,比如日期時間,或含有運算的運算式,則是不被接受的。

數值型別
JSON 中的數值可以是整數或者小數,不能是非數值NaN,允許采用 JavaScript 中的科學運算質,比如,1.23e+3-1.23e+51.23e-3,其中符號e後的+可以省略。JSON 僅支援十進位數值,你不能像在 JavaScript 中一樣書寫類似於0b1010一樣的二進位數值,或類似於0xA09C一樣的十六進位數值。
字串型別
JSON 僅支援采用"括住的字串,不支援使用'`。字串中可以出現以\開頭的逸出序列,比如,"姓名\t年齡""喜極而泣:\uD83D\uDE02"
布林型別
JSON 中的布林型別與 JavaScript 保持一致,可以是truefalse
空值
JSON 中的空值為null,與 JavaScript 保持一致。
陣列
JSON 中的陣列與 JavaScript 陣列類似,但其包含的值的資料型別只能是 JSON 所支援的,比如,["你好!",123,true]
物件
JSON 中的物件與 JavaScript 物件類似,但其包含的內容主要通過鍵值組來進行描述,值的資料型別只能是 JSON 所支援的,鍵只能是采用"括住的字串,比如,{"age":12,"name":"一個好心人"}

逸出
想要詳細了解逸出,你可以檢視逸出,逸出字元,逸出序列介紹一節。

JSON 字串

顧名思義,JSON 字串是指符合 JSON 格式的字串,這些字串可以存在於某個檔案中,或作為程式碼書寫的常值。

JSON 字串與 JavaScript 物件之間的區別
這個問題似乎沒有必要解答,JSON 字串與 JavaScript 物件的區別較為明顯,前者是string型別,後者是object型別,JSON 字串必須嚴格遵守 JSON 的標準,而 JavaScript 物件則比較隨意,其包含的值的資料型別可以不在 JSON 標準內。

值,資料型別
關於常值,你可以檢視值的表示一段。

下面的 JavaScript 常數json儲存了一個 JSON 字串。

json.js
const json = '{"id":1234,"name":"小書屋 001 號"}'

包含了學生資訊的 JSON 字串,被儲存在檔案students.json中。

json/students.json
[
	{ "name": "小小", "age": 12 },
	{ "name": "小白", "age": 13 }
]

JSON 字串轉換

在支援 JSON 的語言中,一般都存在一些函式或方法,用於將 JSON 字串轉換為某種其他的資料型別,或執行相反的操作。這是比較容易理解的,因為沒人願意直接讀取或寫入字串包含的資料。

JavaScript 提供了parsestringify兩個方法來進行 JSON 字串的轉換。

json.js
// 儲存了植物資訊的 JSON 字串
const plant_json = '{"name":"一棵大樹","height":5}'
// 將 JSON 字串轉換為一個 JavaScript 物件
const plant = JSON.parse(plant_json)

// 修改資訊,並將 JavaScript 物件轉換為 JSON 字串 plant.height = 7 console.log(JSON.stringify(plant))
{"name":"一棵大樹","height":7}

程式碼

json.js·codebeatme/programming·GitHub
json/students.json·codebeatme/programming·GitHub