【发布时间】:2015-01-06 11:17:48
【问题描述】:
我在这方面花费了太多时间,但就是想不通。我有一个将 json 字符串写入串行端口的 arduino。字符串如下所示: {"temp":"69","light":"141","z":"999"} 并验证为有效 json。我正在尝试使用以下 python 脚本从串口读取并打印出 json 字符串的各种值。
import serial
import json
serial = serial.Serial("/dev/ttyUSB0", 9600, timeout=1)
while True:
data = serial.readline().strip('\n\r')
j = json.loads(data)
print(data)
print j['temp']
无论我尝试更改什么,最终都会收到以下错误消息:无法解码 JSON 对象。然而,这非常有效:
import json
data = '{"temp":"95","light":"200","z":"999"}'
j = json.loads(data)
print(data)
print j['temp']
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
将
print(data)调用移到出错的行上方,这样您就可以看到您得到了什么。print(repr(data))可能会让您更好地了解数据中的实际内容。 -
您确定
data是一个有效的JSON 字符串吗?在尝试使用json.loads解析它之前尝试将其打印出来。 -
当
data为空行时会发生什么? -
这听起来太像你试图在完成读取之前解析 json 输出。为什么不将
json.loads(data)移到 while 循环之外
标签: python json serialization arduino