ESP32 課程:MicroPython 解析 JSON
本micropython 教程的目的是解釋如何使用在 ESP32 上運行的 MicroPython 解析 JSON 字串。
步驟與項目
介紹
這篇文章的目的是解釋如何使用在 ESP32 上運行的 MicroPython 解析 JSON 字串。如果您在 ESP32 上設置 MicroPython 時需要幫助,請查看此之前的帖子以獲取詳細指南。該指南還解釋瞭如何連接到 Python 提示符。
為了解析 JSON 字串,我們將使用 MicroPython uJSON庫。您還可以在Github上查看該庫的文檔。
由於我們將使用命令列來測試代碼,因此我們需要一個工具來幫助我們將 JSON 內容壓縮在一行中,以便我們輕鬆粘貼它。因此,我們將使用這個網站,它可以接收 JSON 字串並將其壓縮為一行。然後,我們只需複制 JSON 並右鍵單擊終端窗口即可將其傳遞給 Putty。
代碼
連接到 Python 提示符後,我們就可以開始編碼了。所以,我們需要做的第一件事就是導入 uJSON 模塊。只需鍵入下麵的表達式,然後按 Enter。
1 導入ujson
之後,我們應該可以訪問 ujson 對象,它提供了一個稱為加載的方法。此方法接收 JSON 字串作為輸入,並返回與解析的 JSON [1] 對應的對象。我們將從一個簡單的 JSON 結構開始,如下所示。
1 {
2 “name”:”John”
3 },
將其壓縮為單行後,我們得到如下所示的 JSON 字串。
1 {“name”:“John”},
因此,我們現在將此字串作為前面提到的加載方法的輸入傳遞。請注意,我們將在每一側的“””之間括起來字串,以便從 JSON 結構中轉義引號。我們將對象存儲在一個名為parsed的變量中。
1 parsed = ujson.loads(“””{“name”:”John”}”””)
現在,我們將確認我們的返回對像中的 JSON 內容正確無誤。所以我們將列印它。此外,我們將使用 type 函數列印對象的類型。
1 print (parsed)
2 print (type(parsed))
運行整個前面的代碼後,我們應該得到類似於圖 1 的輸出。請注意,我們的對像類型與解析的內容是Python 字典,非常適合以鍵值樣式訪問內容。

現在,我們將訪問等於“name”的鍵的值。它應該返回“約翰”。為了訪問字典中該鍵的值,請發送以下命令。請注意,這就像訪問數組值,但我們不使用索引,而是使用字串格式的鍵。
1 print(parsed[“name”])
您應該得到類似於圖 2 的輸出。請注意,名稱“John”列印在控制台上。
為了完成我們的示例,我們現在將解析一個更複雜的結構,如下所示。例如,這可以表示從 IoT 設備發送的消息。
{
“device”:”temperature”,
“id”:543,
“values”:[1,2,3]
}
壓縮後,我們得到以下內容:
{“device”:”temperature”,”id”:543,”values”:[1,2,3]}
因此,我們現在將解析它並打印 JSON 結構中存在的所有鍵。我們還將打印“值”結構的類型,以了解解析器如何映射它。
1 parsed = ujson.loads(“””{“device”:”temperature”,”id”:543,”values”:[1,2,3]}”””)
2 print (parsed[“device”])
3 print (parsed[“id”])
4 print (parsed[“values”])
5
6 print(type(parsed[“values”]))
您應該得到類似於圖 3 的結果。可以看出,每個鍵的所有值都已正確打印。對於“values”鍵,字典中的結構是一個列表,而不是值的字符串表示形式。當然,這要好得多,因為我們可以使用列表可用的所有函數對這些值進行操作,從而使它們更易於操作。

注意:本文由善良的電子和計算機工程師 Nuno Santos 撰寫。住在葡萄牙里斯本。你可以在這裡查看原文。
他寫了很多關於 ESP32、ESP8266的有用教程和項目,如果你有興趣,可以查看他的博客了解更多。