Konvertieren Sie ein JSON-Objekt in einen Puffer und einen Puffer in ein JSON-Objekt zurück

100

Ich habe ein JSON-Objekt und konvertiere es in ein Bufferund mache hier einen Prozess. Später möchte ich dieselben Pufferdaten konvertieren, um sie in ein gültiges JSON-Objekt zu konvertieren.

Ich arbeite an Node V6.9.1

Unten ist der Code, den ich ausprobiert habe, den ich jedoch erhalte, [object object]wenn ich wieder in JSON konvertiere und dieses Objekt nicht öffnen kann.

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]

Also habe ich versucht, das gesamte Objekt auf Inspektionsmethode zu drucken

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

Wenn ich versuche, es wie ein Array zu lesen

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

Ich habe versucht, auch es zu analysieren SyntaxError: Unexpected token o in JSON at position 2

Ich muss es als reales Objekt betrachten, wie ich es erstellt habe (ich meine wie oben deklariert).

Bitte helfen Sie ..

Prasanth J.
quelle
({"id":"value"}).toString() === '[object Object]' //true
Eric Hodonsky
new Buffer()ist veraltet. Siehe hier: nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

Antworten:

178

Sie müssen den JSON stringifizieren und nicht aufrufen toString

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

Und zum Konvertieren von Zeichenfolgen in json obj:

var temp = JSON.parse(buf.toString());
Ebrahim Pasbani
quelle
1
brauche nicht dienew
jpillora
1
Gibt es nicht eine bessere Lösung? Ich mag es nicht, Zahlen in eine Zeichenfolge umzuwandeln.
Benoit
1
Dies wird nicht funktionieren, wenn es ein anderes Pufferfeld inobj
Gilamran
7
eigentlich wird toString hier nicht benötigt. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly
1
Für mich hat es funktioniert, als ich JSON.stringify entfernt und das Objekt direkt in die Parameter eingefügt habe, wie folgt: var buf = Buffer.from ({Schlüssel: 'Wert', Schlüssel: 'Wert', Schlüssel: 'Wert' , Schlüssel: 'Wert', Schlüssel: 'Wert'});
Jorge Mauricio