簡體   English   中英

用python解碼JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM