2013-12-17 14 views
9

Sto usando il modulo amqp node.js per leggere i messaggi da una coda. Quello che segue è il callback che viene invocato quando c'è un messaggio disponibile sulla coda:Come convertire il buffer dei messaggi AQMP nell'oggetto JSON quando si utilizza il modulo amqp node.js?

function onMessage(message, headers, deliveryInfo) 
{ 
    console.log(message); //This prints buffer 
    //how to convert message (which I expect to be JSON) into a JSON object. 
    //Also how to get the JSON string from the 'message' which seems to be a buffer 
} 

Grazie.

risposta

11

message.data.toString() ha restituito la stringa JSON appropriata.

+0

Questa è la risposta corretta. – Dunk

12

Se si riceve un buffer che contiene JSON, allora avrete bisogno di convertirlo in una stringa in uscita qualcosa di significativo per la console:

console.log(message.toString()) 

Se si desidera convertire che stringa in un completo JavaScript oggetto, poi basta analizzare il JSON:

var res = JSON.parse(message.toString()) 

Edit: nodo-AMQP sembra essere in grado di inviare direttamente gli oggetti JavaScript (vedi here), non dovrebbe ricevere i buffer ma oggetti invece JavaScript ... chec k come mandi i tuoi messaggi.

+0

Quando si imposta il messaggio su {"nome": "anand"} dalla console rabbitmq, console.log (message.toString()) stampa [oggetto oggetto]. –

+1

È normale, consultare ['Object.toString()' 's document] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString). Se lo vedi, hai ricevuto un oggetto javascript standard (molto probabilmente '{name:" anand "}') e non un Buffer. Quindi cosa restituisce 'console.log (messaggio)'? –

+3

message.data.toString() ha funzionato. –

Problemi correlati