Przekonwertuj obiekt JSON na bufor i bufor na obiekt JSON z powrotem


106

Mam obiekt JSON i konwertuję go na a Bufferi wykonuję tutaj pewien proces. Później chcę przekonwertować te same dane bufora, aby przekonwertować je na ważny obiekt JSON.

Pracuję na Node V6.9.1

Poniżej znajduje się kod, który próbowałem, ale otrzymuję, [object object]gdy konwertuję z powrotem na JSON i nie mogę otworzyć tego obiektu.

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]

Próbowałem więc wydrukować cały obiekt metodą inspekcji

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

Jeśli spróbuję odczytać to jak tablicę

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

Próbowałem też parsować to rzut SyntaxError: Unexpected token o in JSON at position 2

Muszę zobaczyć to jako rzeczywisty obiekt, jaki stworzyłem (mam na myśli zadeklarowany powyżej).

Proszę pomóż..


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

new Buffer()jest przestarzałe. Zobacz tutaj: nodejs.org/api/buffer.html#buffer_new_buffer_array
— Spencer,

Odpowiedzi:


193

Musisz zdefiniować json, a nie dzwonić toString

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

I do konwersji ciągu znaków na json obj:

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

1
nie potrzebujęnew
— jpillora

2
Czy nie ma lepszego rozwiązania? Nie lubię zamieniać liczb na ciąg.
— Benoit

1
To nie zadziała, jeśli jest inne pole buforowe wobj
— gilamran,

7
właściwie toString nie jest tutaj potrzebne. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
— Dzenly

1
dla mnie zadziałało, gdy zabrałem JSON.stringify i umieściłem obiekt bezpośrednio w parametrach, na przykład: var buf = Buffer.from ({klucz: 'wartość', klucz: 'wartość', klucz: 'wartość' , klucz: 'wartość', klucz: 'wartość'});
— Jorge Mauricio
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.