python - 期望值:第 1 行,第 1 列(字符 0),带有 Python JSON
问题描述
我目前正在尝试使用 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'>
>>>
解决方案
这个线程正好解决了我的问题。
似乎 MQTT 处理程序抑制了警告和异常,这就是我无法检索堆栈跟踪的原因。 Python 3 Paho-MQTT 发布/订阅 JSON 消息不会解析
推荐阅读
- c# - 如何使用 Direct Show 捕获多个图像
- azure-data-factory - Azure 数据工厂 V2:SAP BW 异常 Microsoft.DataTransfer.Common.Shared.HybridDeliveryException 上的 MDX 查询
- ios - CGImageSourceCreateThumbnailAtIndex() 在 iOS11 和 iOS12 中给出不同的结果
- html - 我想知道为什么当我全屏 HTML 5 视频时滚动会受到干扰
- spring - Spring Cloud Contract 与 Spring AMQP
- amazon-sqs - 测试 AWS SQS 端点
- java - 更新显示不同布局的应用小部件
- docker - DCOS 升级代理节点上的 docker 版本
- javascript - 如何存储对匿名事件侦听器的引用?
- right-to-left - 我如何将 Osclass 脚本中的文本方向从 ltr 更改为 rtl