JS學習筆記#12 | JSON.parse 與 JSON.stringify

更新於 2024/12/23閱讀時間約 8 分鐘

JSON.parse

將 JSON 格式的字串解析成 JavaScript 的物件。

語法

JSON.parse(jsonString)

範例

const jsonString = '{"name": "Alice", "age": 25}';
const obj = JSON.parse(jsonString);
console.log(obj.name); // 輸出: Alice
console.log(obj.age); // 輸出: 25

用途

  • 將後端返回的 JSON 格式資料轉換成 JavaScript 可操作的物件。
  • 在本地存儲中讀取 JSON 資料(例如 localStorage 或 sessionStorage)。

JSON.stringify

將 JavaScript 的物件或陣列轉換成 JSON 格式的字串。

語法

JSON.stringify(value[, replacer[, space]])

範例

const obj = { name: "Alice", age: 25 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // 輸出: '{"name":"Alice","age":25}'

用途

  • 將物件或陣列轉換成 JSON 字串,方便儲存到本地存儲中或傳輸到伺服器。
  • 日誌或除錯時,將物件轉換成易讀的字串。

操作流程:儲存與解析 Array 至 LocalStorage 或 SessionStorage

// 1. 定義原始資料
const data = [1, 2, 3, 4, 5];

// 2. 將資料轉換為 JSON 字串
const jsonString = JSON.stringify(data);

// 3. 儲存至 LocalStorage
localStorage.setItem('myArray', jsonString);

// 4. 從 LocalStorage 取回 JSON 字串
const retrievedString = localStorage.getItem('myArray');

// 5. 將 JSON 字串解析回陣列
const parsedArray = JSON.parse(retrievedString);

// 6. 檢查取回的結果
console.log(parsedArray); // 輸出: [1, 2, 3, 4, 5]

補充說明: JSON.stringify() 可以帶的參數

JSON.stringify(value[, replacer [, space]])

參數說明

  • value:要轉換的值,例如物件、陣列等。
  • replacer(可選):用於過濾或修改值的函數或陣列。
  • space(可選):用於美化輸出的字串,指定縮排空格數。


replacer(過濾或修改值的函數或陣列)

  • 可以是函數:接受每個屬性的 keyvalue,並返回序列化後的值(或 undefined 以排除該屬性)。
const obj = { name: "Alice", age: 25, secret: "hidden" };

const jsonString = JSON.stringify(obj, (key, value) => {
if (key === "secret") return undefined; // 排除 secret 屬性
if (typeof value === "number") return value * 2; // 數值加倍
return value; // 其他值保持原樣
});

console.log(jsonString);
// 輸出: '{"name":"Alice","age":50}'
  • 可以是陣列:指定只序列化的屬性名稱。
const obj = { name: "Alice", age: 25, secret: "hidden" };

const jsonString = JSON.stringify(obj, ["name", "age"]);
console.log(jsonString);
// 輸出: '{"name":"Alice","age":25}'

space(美化輸出的縮排空格數或樣式)

  • 可以是數字:指定每層的縮排空格數。
const obj = { name: "Alice", age: 25, address: { city: "Wonderland", zip: 12345 } };

const jsonString = JSON.stringify(obj, null, 2); // 每層縮排 2 個空格
console.log(jsonString);
/*
輸出:
{
"name": "Alice",
"age": 25,
"address": {
"city": "Wonderland",
"zip": 12345
}
}
*/
  • 可以是字串:用指定字串填充每層的縮排(例如 '\t''-')。
const jsonString = JSON.stringify(obj, null, "--"); // 使用 "--" 進行縮排
console.log(jsonString);
/*
輸出:
{
--"name": "Alice",
--"age": 25,
--"address": {
----"city": "Wonderland",
----"zip": 12345
--}
}
*/



replacer 和 space 的結合使用

const obj = { name: "Alice", age: 25, address: { city: "Wonderland", zip: 12345 } };

const jsonString = JSON.stringify(obj, (key, value) => {
if (key === "age") return undefined; // 排除 age 屬性
return value;
}, 4); // 每層縮排 4 個空格

console.log(jsonString);
/*
輸出:
{
"name": "Alice",
"address": {
"city": "Wonderland",
"zip": 12345
}
}
*/
avatar-img
0會員
12內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
koko的沙龍 的其他內容
瀏覽器中三種主要的客戶端儲存方式:Cookie、LocalStorage 和 SessionStorage。
JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation() 與 event.preventDefault(),並簡要說明它們的作用與使用情境。
時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。
在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)。
陣列(Array)是 JavaScript 中用來儲存一組有序資料的集合。 陣列可以包含各種資料型別的值,例如數字、字串、布林值,甚至其他陣列或物件。了解陣列的基本操作是編寫高效 JavaScript 程式碼的重要基礎。
函式(Function)是 JavaScript 中用來完成特定任務的可重複執行的程式碼片段。 函式可以接受輸入(參數),進行處理,並回傳結果。 主要的函式建立方式有函式宣告、函式表達式、和箭頭函式。
瀏覽器中三種主要的客戶端儲存方式:Cookie、LocalStorage 和 SessionStorage。
JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation() 與 event.preventDefault(),並簡要說明它們的作用與使用情境。
時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。
在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)。
陣列(Array)是 JavaScript 中用來儲存一組有序資料的集合。 陣列可以包含各種資料型別的值,例如數字、字串、布林值,甚至其他陣列或物件。了解陣列的基本操作是編寫高效 JavaScript 程式碼的重要基礎。
函式(Function)是 JavaScript 中用來完成特定任務的可重複執行的程式碼片段。 函式可以接受輸入(參數),進行處理,並回傳結果。 主要的函式建立方式有函式宣告、函式表達式、和箭頭函式。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
※ Javascript和HTML的關係 當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程: 解析 HTML / CSS 檔案,建立物件模型: HTML → DOM (Document Object Model)。 CSS → CSSOM (CSS Obje
※ 函式基礎介紹: ※ JavaScript 特殊的函式特性: 函式可以當成值來傳遞 (可以放進變數或放進物件) 函式可以當成函式的參數 callback - 在特定事件中觸發函式 (非同步特性) ※ 函式的基本寫法: ※ 調用 (invoke) 函式: "調用" 意指呼叫或執行
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
※ 常用Object(物件)型態的方法: 拿到object裡面某個key的value(值): 拿到所有屬性: ※ 存取物件屬性:點記法與括號記法 使用點記法 (dot notation) 或括號記法 (bracket notation) 來存取物件的值,以下兩種寫法的結果是一樣的: //
Thumbnail
學習JavaScript的理由有很多,包括容易學習的程式語言、互動式體驗、多功能性、跨平臺、社群和資源豐富、高市場需求。此外,文章提供了設計和前端教學的相關資源連結。文章中還提到了一些與學習JavaScript相關的教學文章和影音教學資源。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在 Python 中,正則表達式和 JSON 處理,能幫我們有效率的處理文本數據,本文將介紹如何使用正則表達式進行文本分析,以及如何處理和操作JSON數據。
Thumbnail
本文將介紹 JavaScript 中的字符串基本操作,包括連接、長度和切割,以及進階的搜索、替換和正則表達式操作,讓你瞭解如何有效地處理和操作字符串。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
※ Javascript和HTML的關係 當我們輸入新的網址或按下重新整理時,從解析檔案到畫面顯示出來,瀏覽器會進行以下流程: 解析 HTML / CSS 檔案,建立物件模型: HTML → DOM (Document Object Model)。 CSS → CSSOM (CSS Obje
※ 函式基礎介紹: ※ JavaScript 特殊的函式特性: 函式可以當成值來傳遞 (可以放進變數或放進物件) 函式可以當成函式的參數 callback - 在特定事件中觸發函式 (非同步特性) ※ 函式的基本寫法: ※ 調用 (invoke) 函式: "調用" 意指呼叫或執行
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
※ 常用Object(物件)型態的方法: 拿到object裡面某個key的value(值): 拿到所有屬性: ※ 存取物件屬性:點記法與括號記法 使用點記法 (dot notation) 或括號記法 (bracket notation) 來存取物件的值,以下兩種寫法的結果是一樣的: //
Thumbnail
學習JavaScript的理由有很多,包括容易學習的程式語言、互動式體驗、多功能性、跨平臺、社群和資源豐富、高市場需求。此外,文章提供了設計和前端教學的相關資源連結。文章中還提到了一些與學習JavaScript相關的教學文章和影音教學資源。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在 Python 中,正則表達式和 JSON 處理,能幫我們有效率的處理文本數據,本文將介紹如何使用正則表達式進行文本分析,以及如何處理和操作JSON數據。
Thumbnail
本文將介紹 JavaScript 中的字符串基本操作,包括連接、長度和切割,以及進階的搜索、替換和正則表達式操作,讓你瞭解如何有效地處理和操作字符串。