PAHO mqtt客户端(mqttws31.js)和JSON.parse()不起作用

时间:2016-01-17 06:13:25

标签: javascript json paho

我正在向Web客户端发布简单的JSON字符串{"TMP":"-15.5826"}。消息显示在message.payloadString我可以将其打印到html但我无法使用JSON.parse()解析消息。 objdata未定义。这是主要问题,为了解决此问题,我首先使用了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);
};

1 个答案:

答案 0 :(得分:0)

您需要通过在JSON字符串周围使用单引号来阻止shell在发布期间删除双引号:

border-box

完成后,您可以使用mosquitto_pub -t /main/SENSOR -m '{"TMP":"-15.5826"}' (无需JSON.parse(payload))。