如何在 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