Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

228
Vistas
¿Cómo analizo una respuesta MTTQ a JSON en NodeJS?

Estoy escribiendo un código que se suscribe a un servidor MQTT y recibe un cuerpo de respuesta que contiene información que almacenaría en una base de datos. Me he suscrito con éxito y recibo una respuesta, que traté de analizar sin éxito, para recuperar los datos que necesito. JSON.stringify(message) que da un búfer ilegible. También probé JSON.parse(message) , que devuelve [object Object] . ¿Cuál es la mejor manera de analizar los datos? También me gustaría convertir solo los 4 dígitos en el atributo "datos" a un valor de punto flotante HEX de 32 bits, por ejemplo, "C382" = -260 , de https://babbage.cs.qc.cuny.edu/ieee-754. viejo/32bit.html

y de vuelta al decimal.

Este es un ejemplo del cuerpo de respuesta sin análisis.

 {"devId":"493C220223030476","msgType":"rs485ValueRpt" "data":"0103046026C382D569","timestamp":"1650447596"}.

Aquí está mi código

 const mqtt = require('mqtt'); const options={ port:someport, username:'someusername', password:'somepassword', clientId:"randomnumber" } const client= mqtt.connect("mqtt://site.com", options); var topic_list="sometopic" client.on('connect',function () { client.subscribe(topic_list, function (err, granted) { if (err) { console.error(err); return; } console.log('Subscribed to topic: ' + topic_list); }); client.on('message',function(topic, message, packet){ console.log("message is " + JSON.stringify(message)); console.log("topic is "+ topic); }); console.log("connected flag "+ client.connected); })

ingrese la descripción de la imagen aquí

también probé JSON.parse(message) , que devuelve [objeto objeto].

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

JSON.parse() solo funciona cuando la entrada es una cadena

JSON.stringify() solo funciona cuando la entrada es un objeto JavaScript

El objeto de message pasado a la devolución de llamada no es ninguno, es un búfer. Por lo tanto, primero deberá convertir el búfer en una cadena.

Lo siguiente debería obtener un objeto del mensaje y luego convertirlo nuevamente en una cadena embellecida para imprimirlo.

 client.on('message',function(topic, message, packet){ var msgObject = JSON.parse(message.toString()) console.log("message is " + JSON.stringify(msgObject,'',2)); console.log("topic is "+ topic); });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda