[英]Decode JSON with python
我正在嘗試通過串行從arduino讀取數據,該串行發送帶有6個傳感器的名稱和值的JSON字符串。
我已經檢查了JSON驗證程序中的字符串是否有效。 問題是嘗試從JSON字符串獲取字典時收到錯誤。
import json
import serial
import Sensor
s = serial.Serial('COM3',9600)
while True:
m = s.readline()
x = m.decode('UTF-8').rstrip("\n")
b = json.loads(x)
print(b['list'])
{"list":[{"name":"A0","value":"17"},{"name":"A1","value":"39"},
{"name":"A2","value":"13"},{"name":"A3","value":"48"},
{"name":"A4","value":"10"},{"name":"A5","value":"42"}]}
錯誤
Traceback (most recent call last):
File "C:/Users/andrei_vlad/PycharmProjects/untitled/serial_comm.py", line 9, in <module>
b = json.loads(x)
File "C:\Python34\lib\json\__init__.py", line 318, in loads
return _default_decoder.decode(s)
File "C:\Python34\lib\json\decoder.py", line 343, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python34\lib\json\decoder.py", line 361, in raw_decode
raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)
更新:我解決了這個問題。 解碼在字符串前后添加了“”。 我只使用了x [1:-1],它現在可以工作了。 我也有另一個字符串,該字符串在readline中發送,以通知連接已開始。
解碼在字符串的開頭和結尾添加“'”,因此我不得不使用x = x[1:-1]
刪除這兩個字符。解決方案:
import json
import serial
import Sensor
s = serial.Serial('COM3',9600)
m = s.readline()
print([m])
x =m.decode().strip('\n\r')
x = x[1:-1]
x = json.loads(x)
print(x['list'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.