gpt4 book ai didi

javascript - 将缓冲区转换为 JS 对象的问题

转载 作者:搜寻专家 更新时间:2023-10-31 23:41:39 25 4
gpt4 key购买 nike

我正在使用 mosca MQTT 代理程序库和 this用于 MQTT 客户端。

客户端代码如下所示:

client.on('connect', function () {
client.subscribe('presence')
var json = {
someVar: 888,
someNum: 234
}
client.publish('presence', JSON.stringify(json));
});

client.on('message', function (topic, message) {
var json = JSON.parse(message.toString())
console.log(json.someVar);
client.end();
});

处理每条已发布消息的代理位于此处:

server.on('published', function(packet, client) {
console.log('Package received:')
console.log('Published', packet);

var stringBuf = packet.payload.toString('utf-8')
console.log('buffer to string:', stringBuf)
var stringify = JSON.stringify(packet.payload)
console.log('stringify:',stringify);
var json = JSON.parse(stringily);
}

buffer to string: 的输出如下所示:{"someVar":888,"someNum":234}哪个应该是有效的 json。但是每当我尝试访问 json 对象时(在使用 JSON.parse() 之后),它只会为变量返回 undefined。

我也试过

var buf = json.data;
console.log('buffer data:', but);

但这只是返回一个缓冲区数组,它似乎也无法转换。

在客户端函数中,我可以轻松地将字符串解析为 JS 对象,所以我对发生的事情有点迷茫。

有什么建议吗?谢谢。

最佳答案

stdob-- 所说,您正在尝试解析所有传入消息,您的示例的输出示例:

Package received:
Published mqttjs_05cac308
Package received:
Published {"clientId":"mqttjs_05cac308","topic":"presence"}
Package received:
Published <Buffer 7b 22 73 6f 6d 65 56 61 72 22 3a 38 38 38 2c 22 73 6f 6d 65 4e 75 6d 22 3a 32 33 34 7d>
Package received:
Published {"clientId":"mqttjs_05cac308","topic":"presence"}
Package received:
Published mqttjs_05cac308

您可以检查主题来处理您需要的presence 消息:

server.on('published', function (packet, client) {
if (packet.topic == 'presence') {
var stringBuf = packet.payload.toString('utf-8');
var obj = JSON.parse(stringBuf);
console.log(obj);
}
});
/* output: { someVar: 888, someNum: 234 } */

关于javascript - 将缓冲区转换为 JS 对象的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35287579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com