Convertir un objet JSON en tampon et un tampon en objet JSON


101

J'ai un objet JSON et je le convertis en un Bufferet je fais un processus ici. Plus tard, je veux convertir les mêmes données de tampon pour les convertir en objet JSON valide.

Je travaille sur Node V6.9.1

Vous trouverez ci-dessous le code que j'ai essayé mais que j'obtiens [object object]lorsque je reconvertis en JSON et que je ne peux pas ouvrir cet objet.

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]

J'ai donc essayé d'imprimer l'objet entier en utilisant la méthode d'inspection

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

Si j'essaye de le lire comme un tableau

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

J'ai essayé d'analyser aussi ça jette SyntaxError: Unexpected token o in JSON at position 2

J'ai besoin de le voir comme un objet réel comme je l'ai créé (je veux dire comme déclaré ci-dessus).

Veuillez aider ..


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

new Buffer()est obsolète. Voir ici: nodejs.org/api/buffer.html#buffer_new_buffer_array
Spencer

Réponses:


181

Vous devez stringify le json, pas appeler toString

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

Et pour convertir une chaîne en json obj:

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

1
dont new
j'ai

2
N'y a-t-il pas une meilleure solution? Je n'aime pas convertir les nombres en chaîne.
Benoit

1
Cela ne fonctionnera pas s'il y a un autre champ tampon dansobj
gilamran

7
en fait, toString n'est pas nécessaire ici. groups.google.com/forum/#!topic/nodejs/hybuh7DbQkM
Dzenly

1
pour moi, cela a fonctionné lorsque j'ai enlevé le JSON.stringify et mis l'objet directement dans les paramètres, comme ceci: var buf = Buffer.from ({key: 'value', key: 'value', key: 'value' , clé: 'valeur', clé: 'valeur'});
Jorge Mauricio
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.