JSON Nesnesini Arabelleğe ve Arabelleği JSON Nesnesine geri dönüştürme


108

Bir JSON nesnem var ve onu a'ya dönüştürüyorum Bufferve burada bazı işlemler yapıyorum. Daha sonra aynı arabellek verilerini geçerli JSON nesnesine dönüştürmek istiyorum.

Düğüm V6.9.1 üzerinde çalışıyorum

Aşağıda denediğim kod var ancak [object object]JSON'a geri döndüğümde ve bu nesneyi açamadığımda alıyorum .

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]

Bu yüzden tüm nesneyi inspect yöntemiyle yazdırmaya çalıştım

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

Bir dizi gibi okumaya çalışırsam

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

Ayrıştırmayı denedim de fırlattı SyntaxError: Unexpected token o in JSON at position 2

Onu yarattığım gibi gerçek bir nesne olarak görmem gerekiyor (yukarıda belirtildiği gibi demek istiyorum).

Lütfen yardım et..


({"id":"value"}).toString() === '[object Object]' //true
Eric Hodonsky

new Buffer()kullanımdan kaldırıldı. Buraya bakın: nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

Yanıtlar:


197

Çağırmak değil, json'u dizginlemeniz gerekir toString

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

Ve dizeyi json obj'e dönüştürmek için:

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

1
dont need thenew
jpillora

2
Daha iyi bir çözüm yok mu? Sayıları dizeye dönüştürmeyi sevmiyorum.
Benoit

1
obj
İçinde

7
aslında, burada toString gerekli değildir. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly

1
benim için JSON.stringify'ı alıp nesneyi doğrudan parametrelerin içine koyduğumda işe yaradı, şöyle: var buf = Buffer.from ({key: 'value', key: 'value', key: 'value' , anahtar: 'değer', anahtar: 'değer'});
Jorge Mauricio
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.