期望值:使用Python JSON的第1行,第1列(字符0)

时间:2019-06-25 09:24:02

标签: python json simplejson

我目前正在尝试使用simplejson(或仅json)库对通过PAHO MQTT发送的某些数据进行解码。

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显然是一个字节字符串,如上面的输出所示,缺少了什么?为什么那样行不通?

非常感谢


编辑: 我认为这与字符串前面的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 :(得分:0)

此线程完全解决了我的问题。

MQTT处理程序似乎禁止警告和异常,这就是为什么我无法检索stacktrace的原因。 Python 3 Paho-MQTT Published/Subscribed JSON message won't parse