使用pubsub.py示例应用程序发布JSON文档 - MQTT测试客户端显示字符串而非JSON。

0

【以下的问题经过翻译处理】 我使用RPi3B和Python。 https://docs.aws.amazon.com/iot/latest/developerguide/sdk-tutorials.html - 我在“在消息负载中发布JSON文档”部分。我创建了pubsub3.py并更改了代码行:... message = "{}".format(message_string)。教程说要将这行代码更改为... message = "{}".format(args.message),但我的pubsub.py中却有.format(message_string)变量。

MQTT测试客户端以字符串文字形式显示,无法正确解析/格式化为json格式。

我尝试了各种引号、断点和括号的组合(“\ ' { ]”)。从我看到的东西来看,它应该将负载作为json字符串发送...

命令行: pi3@raspberrypi:~ $ python3 aws-iot-device-sdk-python-v2/samples/pubsub3.py --message '{"temperature":40}' --count 1 --topic pi3/battery1/data --endpoint...

pubsub3.py: message = "{}".format(message_string) print("Publishing message to topic '{}': {}".format(message_topic, message)) message_json = json.dumps(message) mqtt_connection.publish( topic=message_topic, payload=message_json, qos=mqtt.QoS.AT_LEAST_ONCE) time.sleep(1)

终端: 发送1个消息 将消息发布到主题“pi3/battery1/data”:“{“temperature”:40}” 从主题“pi3/battery1/data”接收到的消息:b'"{\"temperature\":40}"'

MQTT测试客户端: pi3/battery1/data 2022年12月01日,美国东部时间11:59:52

"{temperature: 40}"

profile picture
专家
已提问 5 个月前7 查看次数
1 回答
0

【以下的回答经过翻译处理】 你的 message 已经是一个字符串编码的JSON格式,这正是 publish() 方法所需要的。

尝试用以下方法替换代码行

message_json = json.dumps(message) 

message_json = message

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则