Ubah Objek JSON menjadi Buffer dan Buffer menjadi Objek JSON kembali

106

Saya memiliki objek JSON dan saya mengubahnya menjadi Bufferdan melakukan beberapa proses di sini. Kemudian saya ingin mengubah data buffer yang sama untuk diubah menjadi objek JSON yang valid.

Saya sedang mengerjakan Node V6.9.1

Di bawah ini adalah kode yang saya coba tetapi saya dapatkan [object object]ketika saya mengonversi kembali ke JSON dan tidak dapat membuka objek ini.

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]

Jadi saya mencoba mencetak seluruh objek menggunakan cara inspect

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

Jika saya mencoba membacanya seperti array

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

Saya mencoba mengurai juga membuangnya SyntaxError: Unexpected token o in JSON at position 2

Saya perlu melihatnya sebagai objek nyata seperti yang saya buat (maksud saya seperti yang dinyatakan di atas).

Tolong bantu..

Prasanth J
sumber
({"id":"value"}).toString() === '[object Object]' //true
Eric Hodonsky
new Buffer()sudah ditinggalkan. Lihat di sini: nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

Jawaban:

193

Anda perlu merangkai json, bukan menelepon toString

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

Dan untuk mengonversi string menjadi json obj:

var temp = JSON.parse(buf.toString());
Ebrahim Pasbani
sumber
1
tidak perlunew
jpillora
2
Apakah tidak ada solusi yang lebih baik? Saya tidak suka mengubah angka menjadi string.
Benoit
1
Ini tidak akan bekerja jika ada bidang penyangga lain diobj
gilamran
7
sebenarnya, toString tidak dibutuhkan di sini. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly
1
bagi saya, ini berfungsi ketika saya mengambil JSON.stringify dan meletakkan objek langsung di dalam parameter, seperti: var buf = Buffer.from ({key: 'value', key: 'value', key: 'value' , kunci: 'nilai', kunci: 'nilai'});
Jorge Mauricio