Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python到Json反序列化错误_Python_Json_Azure_Azure Iot Hub_Azure Stream Analytics - Fatal编程技术网

Python到Json反序列化错误

Python到Json反序列化错误,python,json,azure,azure-iot-hub,azure-stream-analytics,Python,Json,Azure,Azure Iot Hub,Azure Stream Analytics,我正在尝试使用IOTHub遥测从PLC读取值,并使用azure将它们流式传输到PowerBI 当我运行代码时,我能够连接到PLC并读取值,并且能够看到集线器接收到消息。但是,流给了我一个错误,上面写着“InputDeserializerError.InvalidData”。我不确定哪里出了错。请看一下下面的代码,并建议如何序列化它。当我删除字符串值并只运行integers&float时,流将拾取它 # Define the JSON message to send to IoT Hub. MSG

我正在尝试使用IOTHub遥测从PLC读取值,并使用azure将它们流式传输到PowerBI

当我运行代码时,我能够连接到PLC并读取值,并且能够看到集线器接收到消息。但是,流给了我一个错误,上面写着“InputDeserializerError.InvalidData”。我不确定哪里出了错。请看一下下面的代码,并建议如何序列化它。当我删除字符串值并只运行integers&float时,流将拾取它

# 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()。

不要尝试使用字符串格式构建json。创建一个字典并使用
json.dumps()
@klauds。你可以发布一个答案来结束这个问题。谢谢你的建议。我创建了一个字典,并使用json.dumps()获取字符串数据。它甚至对整数也有效。我发布了一个答案,因为这对社区有益。