Ошибка JsondecodeError: ожидаемое значение строка 1 столбец 1 (символ 0) в mqtt

#json #python-3.x #csv #mqtt

Вопрос:

 import paho.mqtt.client as mqtt
import pandas as pd
import json
import csv
import datetime
import os
import sys

def on_connect(client,userdata,flag,rc): //when connect to broker
    print("Connect",str(rc))
    print("client",client)
    print("flag= ",flag)

def on_message(client,userdata,message): //when received message 
    print(datetime.datetime.now())
    data = str(message.payload.decode("utf-8"))  //i think here is the error point..
    info = json.loads(data)["employees"]
 
    keylist = []
    for x in info[0].keys():
        keylist.append(x)
   

    df = pd.DataFrame(info,columns =keylist) #to add column so change json to dataframe
    df.insert(0,"received time",datetime.datetime.now()) #add the time
    keylist.append("received time")
  
    if os.path.isfile('/home/code/jsontocsvtest.csv'):
        csv = df.to_csv("jsontocsvtest.csv",index = False,mode='a',header = False)
    else:
        csv = df.to_csv("jsontocsvtest.csv",index = False,mode='a')

broker_address="0.0.0.0"
client1 = mqtt.Client("client1")
client1.on_connect = on_connect
client1.connect(broker_address)
client1.subscribe("outTopic") 
client1.on_message = on_message
client1.loop_forever()
 

Я получил сообщения в формате JSON и перешел на фрейм данных, чтобы добавить столбцы и перейти на csv.

Когда я пробую этот файл за короткое время , он работает, но спустя еще секунду без отправки от издателя возникает ошибка «Ожидаемое значение:строка 1 столбец 1».

в чем проблема?? ошибка декодирования? как я могу решить эту проблему??

Комментарии:

1. Вы пробовали распечатать data , прежде чем пытаться проанализировать его как JSON, чтобы быть на 100% уверенным, что это правильный JSON? Кроме того, вы уверены, что данные utf-8 закодированы?

2. Вы можете добавить return , если message.payload сообщение неполное, так как сообщение кажется JSONDecodeError неполным .