【程式語言 - Javascript】輕量資料格式 JSON

更新 發佈閱讀 5 分鐘

JSON 全名 JavaScript Object Notation,其格式基本上就是key: value的組成如下:

{
"name": "Bob",
"age": 40,
"childs": [
{
"name": "Justin",
"age": 10
}
]
}

格式有以下幾個特點:

  • 名稱必須為字串,用雙引號包括其名稱: "name"。
  • value的部份可以是「字串、數字、true、false、null、物件或陣列」。
  • 支援嵌套物件。
  • 不支援Javascript的Date、Error、undefined。

Javascript: JSON.stringify

從Javascript中的物件轉為JSON字串

const obj = {
"name": "Bob",
"age": 40,
"childs": [
{
"name": "Justin",
"age": 10
}
]
}

const str = JSON.stringify(obj);
// "{"name":"Bob","age":40,"childs":[{"name":"Justin","age":10}]}"

我們也可以只對其中的name、age進行JSON字串的輸出即可。

const obj = {
"name": "Bob",
"age": 40,
"childs": [
{
"name": "Justin",
"age": 10
}
]
}

const str = JSON.stringify(obj, ["name", "age"]);
// "{"name":"Bob","age":40}"

另外Javascript本身也可以對物件本身實做toJSON的方法來進行加工, 舉例來說,我們今天想要把name的部份都轉換為大寫輸出, 那麼可以這麼做:

const obj = {
"name": "Bob",
"age": 40,
"toJSON" : function() {
return {
name : this.name.toUpperCase(),
age : this.age
};
}
}

const str = JSON.stringify(obj, ["name", "age"]);
// "{"name":"BOB","age":40}"

最後來介紹第三個參數, 做為縮排輸出的配置:

  • 如果是數字1 ~ 10,會自動換行並以指定數字作為縮排的層次。
  • 也可以用某個字元作為縮排的識別。
const obj = {
"name": "Bob",
"age": 40
}

const str = JSON.stringify(obj, undefined, 2);
// "{
// "name": "Bob",
// "age": 40,
// "childs": [
// {
// "name": "Justin",
// "age": 10
// }
// ]
// }"

Javascript: JSON.parse

主要從字串解析回Javascript的物件, 常用於讀檔的時候, 讀取json檔案後由於型態為字串,而我們希望解析為JSON物件較方便處理可以這樣:

const str = "{\\"name\\":\\"Bob\\",\\"age\\":40,\\"childs\\":[{\\"name\\":\\"Justin\\",\\"age\\":10}]}"
const obj = JSON.parse(str);
console.log(obj.name); // "Bob"

結語

這種資料交換格式以可讀性來講勝於XML格式,畢竟省去了太多的標記符號了,而且非常靈活彈性,以空間上來說也較XML輕量,但仍有改善空間,後面我們有會陸續介紹YAML、TOML這類型的資料交換格式,之間又有什麼不同、帶來什麼改善與好處…。

喜歡撰寫文章的你,不妨來了解一下:

Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 — 為什麼要加入?

歡迎加入一起練習寫作,賺取知識!

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
139會員
305內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2024/09/25
使用docker compose來編排容器化程式非常的方便, 但隨著應用越來越複雜, 我們每個Service會有許多共同掛載的目錄、環境變數, 那這些在傳統的程式語言都能藉由繼承、覆寫的技巧來簡化程式碼, 但在YAML呢? 有沒有這樣的功能呢? 答案是有的, 也就是 anchors & ali
Thumbnail
2024/09/25
使用docker compose來編排容器化程式非常的方便, 但隨著應用越來越複雜, 我們每個Service會有許多共同掛載的目錄、環境變數, 那這些在傳統的程式語言都能藉由繼承、覆寫的技巧來簡化程式碼, 但在YAML呢? 有沒有這樣的功能呢? 答案是有的, 也就是 anchors & ali
Thumbnail
2023/09/07
上一篇我們為您帶來了「【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…」,相信對於YAML與JSON這兩種資料交換格式已經相對的熟悉了吧,那這次我們介紹一個更新的資料交換格式TOML,從上一篇我們可以知道YAML相較於JSON之下帶來了許多的好處,也越來越多的
Thumbnail
2023/09/07
上一篇我們為您帶來了「【資料交換格式 - YAML】YAML真的有比較好嗎? 與JSON相比又如何?應用場景…」,相信對於YAML與JSON這兩種資料交換格式已經相對的熟悉了吧,那這次我們介紹一個更新的資料交換格式TOML,從上一篇我們可以知道YAML相較於JSON之下帶來了許多的好處,也越來越多的
Thumbnail
2023/08/27
我們在「」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「
Thumbnail
2023/08/27
我們在「」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「
Thumbnail
看更多
你可能也想看
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
Thumbnail
這些章節的目的是為了介紹JavaScript中的各種數據類型,包括基礎類型和物件類型,以及如何將數據從一種類型轉換為另一種類型。此外,還介紹了如何創建自定義類型,以及如何使用JavaScript中的陣列、集合和字典。
Thumbnail
這些章節的目的是為了介紹JavaScript中的各種數據類型,包括基礎類型和物件類型,以及如何將數據從一種類型轉換為另一種類型。此外,還介紹了如何創建自定義類型,以及如何使用JavaScript中的陣列、集合和字典。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
針對 JavaScript 中的原始型別和隱性轉型進行了詳細的探討
Thumbnail
針對 JavaScript 中的原始型別和隱性轉型進行了詳細的探討
Thumbnail
JS 資料型別分為兩大類,原始型別 (Primitive values) 和物件型別 (Objects)。
Thumbnail
JS 資料型別分為兩大類,原始型別 (Primitive values) 和物件型別 (Objects)。
Thumbnail
在剛開始寫 JavaScript 可能大多數的人不會特別意識到 JavaScript 的型別系統有什麼特別之處,我是在看完 Youtube 上 CS50 的課程,才理解到在不同的程式語言中,會因為語言的特性而有不同的系統,JavaScript 就是偏向比較特別的那一種。
Thumbnail
在剛開始寫 JavaScript 可能大多數的人不會特別意識到 JavaScript 的型別系統有什麼特別之處,我是在看完 Youtube 上 CS50 的課程,才理解到在不同的程式語言中,會因為語言的特性而有不同的系統,JavaScript 就是偏向比較特別的那一種。
Thumbnail
JSON(JavaScript Object Notation)是AJAX(參考:[PHP][AJAX]介紹)常用的資料交換格式。在PHP有提供函數,可以將資料轉換成JSON。除外JSON比XML快速且簡單。 語法 資料是由鍵和值(Key-value)組成。 鍵和值之間用「:」區隔。 資料之
Thumbnail
JSON(JavaScript Object Notation)是AJAX(參考:[PHP][AJAX]介紹)常用的資料交換格式。在PHP有提供函數,可以將資料轉換成JSON。除外JSON比XML快速且簡單。 語法 資料是由鍵和值(Key-value)組成。 鍵和值之間用「:」區隔。 資料之
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News