小编Gee*_*aks的帖子

如何使用JSON.parse反序列化嵌套的Buffer

我试图序列化和反序列化包含多个缓冲区的对象,但是使用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);
Run Code Online (Sandbox Code Playgroud)

给出了输出:

source: Buffer
parse: Object
Run Code Online (Sandbox Code Playgroud)

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

{
  type: "Buffer",
  data: [...]
}
Run Code Online (Sandbox Code Playgroud)

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

javascript json node.js

6
推荐指数
2
解决办法
4232
查看次数

标签 统计

javascript ×1

json ×1

node.js ×1