首頁 > 軟體

OpenMV與JSON編碼問題解析

2022-06-23 14:01:13

JSON

如果想快速嘗試兩個微控制器通訊的。推薦使用串列埠傳輸json字串

JSON是一種簡潔高效的交換資料的格式。 它可以是這種簡單的:

"[[12,0],[10,12],[22,10],[99,11]]"

注:我通過這種簡單的字串,把OpenMV中的色塊的x,y座標傳送出去。

也可以是這種複雜的:
在python中表示多行字串:

'''
{
    "number":10,
    "color" :[255,0,0],
    "rate" :0.65
}
'''

我使用這種結構把OpenMV採集到的顏色資訊傳送到wifi中的伺服器中。

甚至於,可以像這樣:

'''
{
  "firstName": "John",
  "lastName": "Smith",
  "sex": "male",
  "age": 25,
  "address": 
  {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021"
  },
  "phoneNumber": 
  [
    {
      "type": "home",
      "number": "212 555-1234"
    },
   {            
      "type": "fax",
      "number": "646 555-4567"
    }
  ]
}
'''

注意:json的形式和Python很像,但是json是javascript的物件表達形式,和python的表達形式稍有不同。

ujson – JSON編碼與解碼

OpenMV內建的json模組允許Python物件和JSON資料格式之間的轉換

Python生成JSON

OpenMV有json的模組,json.dumps(obj)ujson.loads(str)可以很容的生成json字串和解析json字串。

import json

obj = [[12,0],[10,12],[22,10],[99,11]]
print(json.dumps(obj))

obj = {
    "number":10,
    "color" :[255,0,0],
    "rate" :0.65
}
print(json.dumps(obj))

然後把字串通過串列埠傳送出去,然後在另一端把json字串解析成物件/陣列。然後進行接下來的邏輯操作

會輸出:

'[[12, 0], [10, 12], [22, 10], [99, 11]]'

'{"color": [255, 0, 0], "number": 10, "rate": 0.65}'

常用函數

生成JSON字串

ujson.dumps(obj)

返回表示為JSON字串的 obj

解析JSON字串

ujson.load(stream)

解析給定的 stream ,將其解釋為JSON字串並將資料反序列化Python物件。返回結果物件。

解析一直持續到到檔案結束end-of-file。 如果 stream 中的資料格式不正確, ValueError 將被觸發。

解析JSON物件

ujson.loads(str)

解析JSON str 並返回一個物件。若該字串未正確排列,則會引發示值誤差。

到此這篇關於OpenMV與JSON編碼的文章就介紹到這了,更多相關OpenMV與JSON編碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com