如何在 JavaScript 中將 JSON 轉換為 ArrayBuffer?


在 JavaScript 中,ArrayBuffer 是一種二進位制結構,允許操作未處理的二進位制資料。雖然可以使用像 JSON 這樣的字串表示資料,但在與二進位制 API 互動或需要壓縮資料區域時,將 JSON 轉換為 ArrayBuffer 有時很有用。在本文中,我們將重點介紹三種在 JavaScript 中將 JSON 物件轉換為 ArrayBuffer 的常用方法。

將 JSON 轉換為 ArrayBuffer 的方法

使用 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
}

更新於:2024年11月14日

16 次瀏覽

啟動您的 職業生涯

完成課程獲得認證

開始學習
廣告