我在浏览器中使用“ bson ”npm 包将 JSON 对象转换/序列化为 BSON。文档说它返回一个 Node.js 缓冲区。Node.js 的文档说缓冲区的类型为“Uint8Array”。现在我想在另一个 JSON 对象 (infoJSON) 中发送这个 Uint8Array,但 JSON 不支持 Uint8Array。我尝试将缓冲区 (Uint8Array) 转换为简单数组,将其插入 JSON 对象 (infoJSON),然后直接从 JSON 对象中将其转换回 Uint8Array。但是这个新的 Uint8Array 不能反序列化回原来的 person 对象(见结果)。它被打破。
为什么我使用 BSON?我想将原始对象拆分为多个块,以通过具有数据大小限制的 WebRTC 数据通道发送它。我需要能够识别每个块(类型)。这就是我使用嵌套对象的原因。
var personJSON = { 'name': 'sarah' } // JSON
var personBuffer = Bson.serialize(personJSON) // Uint8Array
var personArray = Array.from(personBuffer) // Simple array
var infoJSON = { 'count': 1, 'person': personArray } // Inserting array into JSON
var personUint8Array = Uint8Array.from(infoJSON.person) // Converting array back to Uint8Array
console.log('deserializedObj:')
console.log(Bson.deserialize(personUint8Array))
结果: