当前位置: 首页 > news >正文

将JS字节流转化为对象

将JS字节流转化为对象

在JavaScript中,将字节流(ArrayBuffer或TypedArray)转换为对象通常涉及以下几个步骤:

1. 从字节流读取数据

首先你需要有一个字节流,通常以ArrayBuffer、Blob或TypedArray(如Uint8Array)的形式存在。

// 示例字节流 - 通常来自文件、网络请求等
const byteArray = new Uint8Array([123, 34, 110, 97, 109, 101, 34, 58, 34, 74, 111, 104, 110, 34, 125]);

2. 将字节流转为字符串

如果字节流表示的是一个JSON字符串,可以这样转换:

function uint8ArrayToString(uint8Array) {return new TextDecoder().decode(uint8Array);
}const jsonString = uint8ArrayToString(byteArray);
console.log(jsonString); // 输出: {"name":"John"}

3. 解析字符串为对象

const obj = JSON.parse(jsonString);
console.log(obj); // 输出: {name: "John"}

完整示例

// 1. 假设我们有一个Uint8Array表示的JSON字节流
const byteArray = new Uint8Array([123, 34, 110, 97, 109, 101, 34, 58, 34, 74, 111, 104, 110, 34, 125]);// 2. 将字节流转为字符串
function uint8ArrayToString(uint8Array) {return new TextDecoder().decode(uint8Array);
}const jsonString = uint8ArrayToString(byteArray);// 3. 解析JSON字符串为对象
const obj = JSON.parse(jsonString);console.log(obj); // {name: "John"}

其他情况

如果是二进制格式(如Protocol Buffers)

如果你使用的是Protocol Buffers等二进制序列化格式,需要使用相应的库来反序列化:

// 假设使用protobuf.js
const message = MyMessage.decode(new Uint8Array(buffer));

如果是Node.js环境

在Node.js中,可以使用Buffer类:

const buffer = Buffer.from(byteArray);
const str = buffer.toString('utf8');
const obj = JSON.parse(str);

注意事项

  1. 确保字节流的编码与你使用的解码方式匹配(通常是UTF-8)
  2. 处理可能的异常,如无效的JSON或字节流
  3. 对于大型字节流,考虑使用流式处理以避免内存问题
http://www.dtcms.com/a/296965.html

相关文章:

  • 西安交通大学XJTU 通信/信息工程大三和部分大四 实验和课程答案
  • C++哪些运算符不能被重载?
  • kubernetes集群中部署CoreDNS服务
  • day46day47 通道注意力
  • 一种基于单片机控制的太阳能电池板系统设计
  • 集训Demo6
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • 《计算机网络》实验报告八 加密、数字签名与证书
  • pytest测试框架
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWGeneral
  • 【Vue学习笔记】状态管理:Pinia 与 Vuex 的使用方法与对比【附有完整案例】
  • 网络安全入门第一课:信息收集实战手册(2)
  • C语言-指针[变量指针与指针变量]
  • Java 集合框架之----ArrayList
  • Effective Modern C++ 条款16:保证const成员函数的线程安全性
  • 网址收集总结
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-17,(知识点:PCB布线,传输线阻抗影响因素)
  • 第一二章笔记
  • [ComfyUI] --ComfyUI 是什么?比 Stable Diffusion WebUI 强在哪?
  • 【STM32项目】智能台灯
  • 无人机保养指南
  • 深入解析Hadoop NameNode的Full GC问题、堆外内存泄漏及元数据分治策略
  • 软件测试的分类
  • C++实现精确延时的方法
  • 季逸超:Manus的上下文工程启示
  • Photoshop下载安装入门教程:从下载安装到第一次完美使用
  • 应急响应】Linux 自用应急响应工具发版 v6.0(LinuxGun)
  • 20 BTLO 蓝队靶场 Sticky Situation 解题记录
  • Voice AI Agent 知识库:打造你自己的语音智能体!
  • Vitest 用法详解及 Coverage Web 工具介绍