如何在 NodeJS 中解析对 JSON 的 MTTQ 响应
How do I parse an MTTQ response to JSON in NodeJS
我正在编写一个代码,它订阅了一个 MQTT 服务器,并接收到一个响应主体,其中包含我将存储在数据库中的信息。我已成功订阅,并收到了一个响应,但我试图解析该响应失败,以便检索我需要的数据。我试过 JSON.stringify(message)
,它给出了一个不可读的缓冲区。我也试过 JSON.parse(message)
,returns [object Object]
。
解析数据的最佳方法是什么?我还想仅将“数据”属性中的 4 位数字转换为 32 位十六进制浮点值,例如“C382”=-260
,来自 https://babbage.cs.qc.cuny.edu/ieee-754.old/32bit.html
回到十进制。
这是一个未经解析的响应体示例。
{"devId":"493C220223030476","msgType":"rs485ValueRpt"
"data":"0103046026C382D569","timestamp":"1650447596"}.
这是我的代码
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);
})
也试过JSON.parse(message)
,其中returns[object object].
JSON.parse()
仅在输入为字符串时有效
JSON.stringify()
仅在输入为 JavaScript 对象时有效
传递给回调的message
对象都不是,它是一个Buffer。因此,您需要先将 Buffer 转换为字符串。
下面应该从消息中获取一个对象,然后将其转换回美化字符串以将其打印出来。
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);
});
我正在编写一个代码,它订阅了一个 MQTT 服务器,并接收到一个响应主体,其中包含我将存储在数据库中的信息。我已成功订阅,并收到了一个响应,但我试图解析该响应失败,以便检索我需要的数据。我试过 JSON.stringify(message)
,它给出了一个不可读的缓冲区。我也试过 JSON.parse(message)
,returns [object Object]
。
解析数据的最佳方法是什么?我还想仅将“数据”属性中的 4 位数字转换为 32 位十六进制浮点值,例如“C382”=-260
,来自 https://babbage.cs.qc.cuny.edu/ieee-754.old/32bit.html
回到十进制。
这是一个未经解析的响应体示例。
{"devId":"493C220223030476","msgType":"rs485ValueRpt"
"data":"0103046026C382D569","timestamp":"1650447596"}.
这是我的代码
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);
})
也试过JSON.parse(message)
,其中returns[object object].
JSON.parse()
仅在输入为字符串时有效
JSON.stringify()
仅在输入为 JavaScript 对象时有效
传递给回调的message
对象都不是,它是一个Buffer。因此,您需要先将 Buffer 转换为字符串。
下面应该从消息中获取一个对象,然后将其转换回美化字符串以将其打印出来。
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);
});