Ожидаемое значение: строка 1, столбец 1 (символ 0) с Python JSON - PullRequest
0 голосов
/ 25 июня 2019

В настоящее время я пытаюсь декодировать некоторые данные, отправленные через PAHO MQTT, с помощью библиотеки simplejson (или просто json).

Got message <paho.mqtt.client.MQTTMessage object at 0x7f1e500432e8>
b'{"timestamp": "2019-06-24T14:34:25+02:00", "data": "14:34:25.791022 close(74)               = 0\\n", "processname": ""}'
Error in on_message
Expecting value: line 1 column 1 (char 0)

Я не могу понять, почему json не расшифровал эту строку.

Вот часть, которая выдает ошибку:

def on_message(self,client,userdata,msg):
        """MQTT Callback function for handling received messages"""
        print("Got message {0}".format(str(msg)))
        datadict = simplejson.loads(msg.payload)

        temp = self.parse(datadict['data'])

msg.payload, очевидно, является байтовой строкой, как видно из выходных данных выше, чего не хватает? Почему это не работает?

Большое спасибо заранее


EDIT: Я думаю, что это как-то связано с буквой b перед строкой, потому что это прекрасно работает:

Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import simplejson
>>> data = simplejson.loads('{"timestamp": "2019-06-24T14:34:25+02:00", "data": "14:34:25.791022 close(74)               = 0\\n", "processname": ""}')
>>> print(type(data))
<class 'dict'>
>>>

1 Ответ

0 голосов
/ 25 июня 2019

Эта тема решает именно мою проблему.

Кажется, что обработчики MQTT подавляют предупреждения и исключения, поэтому я не смог получить трассировку стека. Python 3 Paho-MQTT Опубликованное / подписанное сообщение JSON не будет проанализировано

...