如何解决Python至Json DeserializerError
我正在尝试使用IOTHub遥测从PLC读取值,并使用天蓝色将其流式传输到PowerBI。
运行代码时,我能够连接到PLC并读取值,并且能够看到集线器接收到消息。但是,该流给我一个错误,提示“ InputDeserializerError.InvalidData”。我不确定哪里出了问题。请看下面的代码,并提出如何序列化的建议。当我删除字符串值并仅运行整数和浮点数时,流将其选中。
# Define the JSON message to send to IoT Hub.
MSG_TXT = "{\"Bin1Load\": %s,\"Bin1Grower\": %s,\"Bin1Variety\": %s,\"Bin1StatedTn\": %.2f,\"Bin1S\": %.3f,\"Bin1CalcV\": %.2f}"
def send_confirmation_callback(message,result,user_context):
print ( "IoT Hub responded to message with status: %s" % (result) )
def iothub_client_init():
# Create an IoT Hub client
client = IoTHubClient(CONNECTION_STRING,PROTOCOL)
return client
def iothub_client_telemetry_sample_run():
try:
client = iothub_client_init()
print ( "IoT Hub device sending periodic messages,press Ctrl-C to exit" )
while True:
# Build the message with simulated telemetry values.
b1load = comm.Read('Bin01.Content.Load')
b1grower = comm.Read('Bin01.Content.Grower')
b1variety = comm.Read('Bin01.Content.Variety')
b1statedton = comm.Read('Bin01.Content.Stated_Tn')
b1s = comm.Read('Bin01.Content.SG')
b1calcvol = comm.Read('Bin01.Content.Calc_Vol')
msg_txt_formatted = MSG_TXT % (b1loads,b1growers,b1varietys,b1statedton,b1s,b1calcvol)
message = IoTHubMessage(msg_txt_formatted)```
解决方法
解决方案:
请勿尝试使用字符串格式构建JSON。创建字典并使用json.dumps()。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。