我正在向Web客户端发布简单的JSON字符串{"TMP":"-15.5826"}
。消息显示在message.payloadString
我可以将其打印到html但我无法使用JSON.parse()
解析消息。 obj
和data
未定义。这是主要问题,为了解决此问题,我首先使用了JSON.stringify()
,这次解析了消息,但data
仍未定义。似乎stringify添加了额外的双引号并使json字符串无效。 mqttws31.js是最新的,经纪人是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);
};
答案 0 :(得分:0)
您需要通过在JSON字符串周围使用单引号来阻止shell在发布期间删除双引号:
border-box
完成后,您可以使用mosquitto_pub -t /main/SENSOR -m '{"TMP":"-15.5826"}'
(无需JSON.parse(payload)
)。