gpt4 book ai didi

javascript - 如何使用 JSON.parse 反序列化嵌套缓冲区

转载 作者:数据小太阳 更新时间:2023-10-29 04:56:21 25 4
gpt4 key购买 nike

我正在尝试序列化和反序列化包含多个缓冲区的对象,但是使用 JSON.parse() 反序列化来自 JSON.stringify() 的结果字符串无法正确地重新创建缓冲区。

var b64 = 'Jw8mm8h+agVwgI/yN1egchSax0WLWXSEVP0umVvv5zM='; 
var buf = new Buffer(b64, 'base64');

var source = {
a: {
buffer: buf
}
};

var stringify = JSON.stringify(source);
var parse = JSON.parse(stringify);

console.log("source: "+source.a.buffer.constructor.name);
console.log("parse: "+parse.a.buffer.constructor.name);

给出输出:

source: Buffer
parse: Object

这是有道理的,因为 Buffer.toJSON() 的输出创建了一个简单的对象,如下所示:

{
type: "Buffer",
data: [...]
}

我想我可以遍历生成的对象寻找具有上述属性的子对象并将它们转换回缓冲区,但是我觉得应该有一个更优雅的解决方案使用我缺少的 JSON.parse()。

最佳答案

你可以使用 reviver function检查一个对象是否看起来像一个字符串化的 Buffer,并从中创建一个合适的实例:

var parse = JSON.parse(stringify, (k, v) => {
if (
v !== null &&
typeof v === 'object' &&
'type' in v &&
v.type === 'Buffer' &&
'data' in v &&
Array.isArray(v.data)) {
return new Buffer(v.data);
}
return v;
});

关于javascript - 如何使用 JSON.parse 反序列化嵌套缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com