解析與編碼JSON字符串

解析JSON字符串

教程https://mc.dfrobot.com.cn/thread-272080-1-1.html
過程
運用命令行測試代碼,因此我們需要藉助一個工具把JSON內容壓縮成一行,這樣我們就可以輕鬆地完成粘貼。我們將通過這個網站https://www.cleancss.com/json-minify/

接收JSON字符串並將其壓縮到一行。

然後,複製JSON並在終端窗口右擊,將其傳遞給Putty。

複習python(代碼)

導入uJSON模塊

 import ujson

訪問ujson對象

以JSON字符串作爲輸入值進行接收,然後返回與已解析的JSON[1]對應的對象。

1  {
2  "name":"John"
3   },

壓縮爲一行爲

1  {"name":"John"},

存儲於名爲parsed(已解析)的變量中

爲了從JSON結構轉義引號,我們在字符串兩邊添加"""符號將其括起來。
json.loads()函數是將json格式數據轉換爲字典(可以這麼理解,json.loads()函數是將字符串轉化爲字典)

1 parsed = ujson.loads("""{"name":"John"}""")

驗證

驗證返回對象已正確獲取JSON內容,並用type函數打印對象的類型。

1   print (parsed)
2   print (type(parsed))

獲取“name”鍵的值

意爲獲取字典中該鍵的值,此過程和獲取數組值相似,但此處用的不是索引,而是字符串格式的鍵。

1   print(parsed["name"])

控制檯上會打印姓名“John”,對象類型爲字典。
在這裏插入圖片描述
同理,顯示從物聯網設備發送的消息。

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"]))

在這裏插入圖片描述

編碼JSON字符串

物聯網設備可能發出的消息,包含設備(溫度傳感器)類型和部分虛擬測量值。
想要獲取以下:

1   {
2    "deviceType": "Temperature",
3    "values": [23,22,25]
4     }

Python字典:名稱-值,名稱-值結構非常適合JSON的結構。

首先,將一個空字典賦值給一個名爲dict的變量。

dict = {}

然後,將字符串“Temperature”(溫度)賦值給鍵“deviceType”(設備類型)。

dict["deviceType"] = "Temperature"

我們還要將一個包含JSON所示值的列表賦值給鍵“values”(值)。請注意,Python字典的值可以是列表等對象[1]。

dict["values"] = [23,22,25]

賦值後,我們將打印字典變量,此步驟只是爲了確認賦值無誤。

print(dict)


我們得到了一個包含一些名稱-值對的字典結構。請注意,Python字典的字符串表示形式與JSON字符串非常相似。

1    dict = {}
2    dict["deviceType"] = "Temperature"
3    dict["values"] = [23,22,25]
4
5     print(dict)

json.dumps()函數是將一個Python數據類型列表進行json格式的編碼(可以這麼理解,json.dumps()函數是將字典轉化爲字符串)

將字典轉換爲JSON字符串

打印了已編碼的字符串。請注意,此輸出結果與我們之前獲得的字典的字符串表示形式非常相似,但它的名稱和值現在是介於雙引號而不是單引號之間,這就是JSON的格式。 區別如下圖。

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

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章