泛美卫生组织 mqtt 客户端 (mqttws31.js) 和 JSON.parse() 不工作
PAHO mqtt client(mqttws31.js) and JSON.parse() does not work
我正在向 Web 客户端发布简单的 JSON 字符串 {"TMP":"-15.5826"}
。消息出现在 message.payloadString
我可以将它打印到 html 但我无法用 JSON.parse()
解析消息。 obj
和 data
未定义..这是主要问题,为了解决这个问题,我首先使用了 JSON.stringify()
,这次消息已解析,但 data
仍未定义。 stringify 似乎添加了额外的双引号并使 json 字符串无效。 mqttws31.js 是最新的,broker 是 mosquitto 1.4.4。我应该怎么做才能让 JSON.parse()
工作?
通过 mosquitto 命令发布:mosquitto_pub -t /main/SENSOR -m {"TMP":"-15.5826"}
function onMessageArrived(message) {
var topic = message.destinationName;
var payload = message.payloadString;
$('#ws').prepend('<li class=messagelist>' + topic + ' = ' + payload + '</li>');
var jsonString = JSON.stringify(payload);
obj = JSON.parse(jsonString); //parse with extra double quotes
//obj = JSON.parse(payload); //does not parse
var data = obj.TMP;
alert(data);
};
您需要通过在 JSON 字符串周围使用单引号来防止 shell 在发布期间删除双引号:
mosquitto_pub -t /main/SENSOR -m '{"TMP":"-15.5826"}'
完成后,您可以使用 JSON.parse(payload)
(不需要 JSON.stringify()
)。
我正在向 Web 客户端发布简单的 JSON 字符串 {"TMP":"-15.5826"}
。消息出现在 message.payloadString
我可以将它打印到 html 但我无法用 JSON.parse()
解析消息。 obj
和 data
未定义..这是主要问题,为了解决这个问题,我首先使用了 JSON.stringify()
,这次消息已解析,但 data
仍未定义。 stringify 似乎添加了额外的双引号并使 json 字符串无效。 mqttws31.js 是最新的,broker 是 mosquitto 1.4.4。我应该怎么做才能让 JSON.parse()
工作?
通过 mosquitto 命令发布:mosquitto_pub -t /main/SENSOR -m {"TMP":"-15.5826"}
function onMessageArrived(message) {
var topic = message.destinationName;
var payload = message.payloadString;
$('#ws').prepend('<li class=messagelist>' + topic + ' = ' + payload + '</li>');
var jsonString = JSON.stringify(payload);
obj = JSON.parse(jsonString); //parse with extra double quotes
//obj = JSON.parse(payload); //does not parse
var data = obj.TMP;
alert(data);
};
您需要通过在 JSON 字符串周围使用单引号来防止 shell 在发布期间删除双引号:
mosquitto_pub -t /main/SENSOR -m '{"TMP":"-15.5826"}'
完成后,您可以使用 JSON.parse(payload)
(不需要 JSON.stringify()
)。