如何在 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
}
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP