问题描述
如何将 Mqtt5Publish.getPayloadAsBytes()
转换为格式正确的 JSON 字符串?
即 获取这样发布的消息:
'{"SampleData0": "1.2.3","SampleData1": "4.5.6"}'
当订阅者获得它时恢复到相同的格式。
我使用的是 Java 中的 HiveMQTT 客户端库。
解决方法
我的问题实际上是由发布者的一些不正确的 JSON 格式引起的。发布者客户端将 JSON 发送为:
"{"SampleData0": "1.2.3","SampleData1": "4.5.6"}"
然而,这意味着当我的订阅者客户端收到有效负载并将其从字节数组转换为 JSON 字符串时,有效负载将如下所示:
{SampleData0: 1.2.3,SampleData1: 4.5.6}
为了解决这个问题,我让发布商客户端发送:
'{"SampleData0": "1.2.3","SampleData1": "4.5.6"}'
注意使用单引号 '
字符而不是双引号,这会转义双引号字符 "
,以便在字节数组转换回 JSON 时它们仍然存在,使用 new String(mqtt5Publish.getPayloadAsBytes())
{"SampleData0": "1.2.3","SampleData1": "4.5.6"}