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