如何在 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 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.