Javascript NodeJS-如何在使用JSON.parse(JSON.stringify())后从缓冲区检索原始数据

Javascript NodeJS-如何在使用JSON.parse(JSON.stringify())后从缓冲区检索原始数据,javascript,node.js,json,buffer,cryptojs,Javascript,Node.js,Json,Buffer,Cryptojs,我正在使用crypto库发送一个POST请求来更新一些数据,出于某种原因,我得到的结果就像我使用了JSON.parse(JSON.stringify(myBufferData))到缓冲区数据一样。我想恢复原始数据 如何复制我的情况: var buf = Buffer.from('abc'); var parsedBuf = JSON.parse(JSON.stringify(buf)); -> I faced with this result at some point. buf.toS

我正在使用
crypto
库发送一个POST请求来更新一些数据,出于某种原因,我得到的结果就像我使用了
JSON.parse(JSON.stringify(myBufferData))
缓冲区
数据一样。我想恢复原始数据

如何复制我的情况:

var buf = Buffer.from('abc');
var parsedBuf = JSON.parse(JSON.stringify(buf)); -> I faced with this result at some point.

buf.toString() -> Give the expected result ('abc').
parsedBuf.toString() -> Doesn't retrieve original data ('[object Object]').
如何从
parsedBuf
检索原始数据?

解决方案 使用
Buffer(parsedBuf.toString()
而不是
parsedBuf.toString()
来检索原始数据


解释 通过检查,我发现它的
toString
方法不是Javascript的内置方法。只要调用
buf.[method].toString()
,就可以随时随地检查它的源代码。在这种情况下:

  • buf.toString.toString()

  • JSON.parse(JSON.stringify(buf)).toString.toString()

因此,它以某种方式向我透露了他们的源代码:

//缓冲区的toString方法
函数(){
让结果;
if(arguments.length==0){
结果=此.utf8Slice(0,此.length);
}否则{
result=slowToString.apply(这是参数);
}
如果(结果===未定义)
抛出新错误(''toString()'failed');
返回结果;
}
//Javascript的内置
函数toString(){[native code]}//我还没有找到它
事实证明,每当您执行
JSON.parse(JSON.stringify(buf))
时,实际上就是在将缓冲区转换为Javascript对象。例如:

{type:'Buffer',data:[61,62,63]}


因此,它上的另一个
toString()
将运行本机JS函数(不是缓冲区),默认情况下返回
[object]

谢谢@testing\u 22。我还发现Buffer.from()给出了预期的结果。