将JSON对象转换为Buffer并将Buffer转换为JSON对象


101

我有一个JSON对象,正在将其转换为,Buffer并在此处进行了一些处理。稍后,我想转换相同的缓冲区数据以转换为有效的JSON对象。

我正在研究Node V6.9.1

以下是我尝试过的代码,但是[object object]当我转换回JSON并且无法打开此对象时,我得到了。

var obj = {
   key:'value',
   key:'value',
   key:'value',
   key:'value',
   key:'value'
}

var buf = new Buffer.from(obj.toString());

console.log('Real Buffer ' + buf);  //This prints --> Real Buffer <Buffer 5b 6f 62 6a 65 63 74>

var temp = buf.toString();

console.log('Buffer to String ' + buf);  //This prints --> Buffer to String [object Object]

所以我尝试使用检查方式打印整个对象

console.log('Full temp ' + require('util').inspect(buf, { depth: null }));  //This prints --> '[object object]' [not printing the obj like declared above]

如果我尝试像数组一样读取它

 console.log(buf[0]);  // This prints --> [ 

我也尝试解析它抛出 SyntaxError: Unexpected token o in JSON at position 2

我需要将其视为我创建的真实对象(我的意思是像上面声明的那样)。

请帮忙..


({"id":"value"}).toString() === '[object Object]' //true
埃里克·霍登斯基

new Buffer()不推荐使用。看到这里:nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

Answers:


181

您需要将json字符串化,而不是调用 toString

var buf = Buffer.from(JSON.stringify(obj));

并将字符串转换为json obj:

var temp = JSON.parse(buf.toString());

1
不需要new
jpillora

2
有没有更好的解决方案?我不喜欢将数字转换为字符串。
Benoit

1
如果在obj
gilamran '18

7
实际上,这里不需要toString。groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly,

1
对我来说,当我拿走JSON.stringify并将对象直接放在参数中时,它就起作用了,就像这样:var buf = Buffer.from({{key:'value',key:'value',key:'value' ,key:'value',key:'value'});
豪尔赫·毛里西奥
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.