解析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)