ESP32 課程:MicroPython 解碼 JSON

教程

本micropython 教程的目的是解釋如何使用 MicroPython 和 ESP32 上的 ujson 庫對 JSON 消息進行編碼。

介紹

這篇文章的目的是解釋如何使用 MicroPython 和ESP32 上的ujson庫對JSON 消息進行編碼。您可以在上一篇文章中查看如何啟用 MicroPython 支持。此外,如果您需要解析 JSON 的指南,請查看之前的教程。

代碼
首先,我們需要導入 ujson 模塊,使用以下命令完成:

1 導入ujson

重要提示:在撰寫本文時,ujson是 MicroPython 固件中包含的模塊之一,因此我們可以直接導入它而無需任何額外的過程。不過,如果您無法直接導入,則該模塊可能不再默認包含,需要手動安裝。
我們將嘗試獲取的示例 JSON 消息如下所示。它正在模擬來自物聯網設備的可能消息,具有設備類型(溫度傳感器)和一些虛擬測量值。

因此,我們需要將消息的結構放入一個變量中。我們將使用 Python 字典,它用作名稱-值結構。因此,它非常適合 JSON 的結構。我們首先將一個空字典分配給一個名為dict的變量。然後,我們將字符串“ Temperature ”分配給鍵“ deviceType ”。我們還將將 JSON 中顯示的值的列表分配給鍵“values”。請注意,Python 字典的值可以是對象 [1],例如列表。賦值後,我們將打印字典變量,只是為了確認值被正確賦值。

因此,在執行前面的代碼之後,我們應該得到類似於圖 1 的輸出。可以看出,我們有一個包含一些名稱-值對的字典結構。請注意,Python 字典的字符串表示與 JSON 字符串非常相似。

圖 1 – Python 字典的內容。

最後,我們現在將使用ujson 模塊的轉儲函數將字典轉換為 JSON 字符串。此方法接收字典作為輸入並返回其 JSON 字符串表示。調用此函數後,我們將打印結果。

1    encoded = ujson.dumps(dict)
2     print(encoded)

最終結果可以在圖 2 中看到,其中打印了編碼的字符串。請注意,輸出與我們之前得到的字典的字符串表示非常相似,但名稱和值現在位於雙引號之間,而不僅僅是單引號,這就是 JSON 的格式。

圖 2 – JSON 編碼程序的最終輸出。