Java 发送给JSONObject的MQTT消息

Java 发送给JSONObject的MQTT消息,java,json,mqtt,Java,Json,Mqtt,我想将接收到的JSON格式的MQTT消息(例如:{“事件”:“值”,“类型”:“r”,“值”:0})转换为JSONObject,但我不确定如何进行转换 我试过这个: public void messageArrived(字符串t,MqttMessage m)引发异常{ 字符串消息=m.toString(); JSONObject jsonmsg=(JSONObject)JSONObject.stringToValue(消息); } 但这并没有真正起作用。有办法吗?您应该使用getPayload

我想将接收到的JSON格式的MQTT消息(例如:{“事件”:“值”,“类型”:“r”,“值”:0})转换为JSONObject,但我不确定如何进行转换

我试过这个:

public void messageArrived(字符串t,MqttMessage m)引发异常{
字符串消息=m.toString();
JSONObject jsonmsg=(JSONObject)JSONObject.stringToValue(消息);
}

但这并没有真正起作用。有办法吗?

您应该使用
getPayload()
方法检索消息的有效负载,该方法返回
字节[]
,因为MQTT不是纯文本协议

然后,您可以用该
字节[]
生成一个
字符串
,用该
字符串
生成一个
JSONObject
,如下所示:

JSONObject jsonmsg = new JSONObject(new String(m.getPayload());

您使用的是哪个MQTT实现和JSON解析库?我认为您的错误是使用了
MqttMessage.toString()
,这可能是为了提高可读性,而不是为了检索消息以进行进一步处理。我通过Maven获取了这两种消息。对于MQTT:org.eclipse.paho org.eclipse.paho.client.mqttv3和JSON:org.JSON最新版本1.2.1,非常感谢,完成了