如何在 JavaScript 中將 JSON 轉換為 ArrayBuffer?
在 JavaScript 中,ArrayBuffer 是一種二進位制結構,允許操作未處理的二進位制資料。雖然可以使用像 JSON 這樣的字串表示資料,但在與二進位制 API 互動或需要壓縮資料區域時,將 JSON 轉換為 ArrayBuffer 有時很有用。在本文中,我們將重點介紹三種在 JavaScript 中將 JSON 物件轉換為 ArrayBuffer 的常用方法。
將 JSON 轉換為 ArrayBuffer 的方法
- 使用 TextEncoder:適用於 UTF-8 編碼。
- 使用 DataView 手動轉換:適用於處理特定的二進位制編碼格式。
使用 TextEncoder
TextEncoder API 允許您透過轉換建立 UTF-8 編碼的 ArrayBuffer。對於需要 UTF-8 編碼的人來說,這是一個簡單而實用的方法。
示例程式碼
// JSON data const jsonData = { name: "Pankaj", age: 20, city: "Surat" }; // Convert JSON to string const jsonString = JSON.stringify(jsonData); // Encode string to ArrayBuffer const encoder = new TextEncoder(); const arrayBuffer = encoder.encode(jsonString).buffer; console.log(arrayBuffer);
輸出
ArrayBuffer { [Uint8Contents]: <7b 22 6e 61 6d 65 22 3a 22 50 61 6e 6b 61 6a 22 2c 22 61 67 65 22 3a 32 30 2c 22 63 69 74 79 22 3a 22 53 75 72 61 74 22 7d>, byteLength: 41 }
使用 DataView 手動轉換
如果您需要更多地控制編碼過程或需要以位元組級別處理資料,可以使用 DataView 將 JSON 資料手動寫入 ArrayBuffer。
示例程式碼
// JSON data const jsonData = { name: "Pankaj", age: 20, city: "Surat" }; // Convert JSON to string const jsonString = JSON.stringify(jsonData); // Create ArrayBuffer with byte length equal to string length const arrayBuffer = new ArrayBuffer(jsonString.length); const view = new DataView(arrayBuffer); // Write each character code into the ArrayBuffer for (let i = 0; i < jsonString.length; i++) { view.setUint8(i, jsonString.charCodeAt(i)); } console.log(arrayBuffer);
輸出
ArrayBuffer { [Uint8Contents]: <7b 22 6e 61 6d 65 22 3a 22 50 61 6e 6b 61 6a 22 2c 22 61 67 65 22 3a 32 30 2c 22 63 69 74 79 22 3a 22 53 75 72 61 74 22 7d>, byteLength: 41 }
廣告