文章目录
MicroPython 库 —— 快速上手ujson
JSON基础介绍
1. 什么是Json?
- Json 指的是JavaScript对象表示法(JavaScript Object Notation)。
- Json 是轻量级的文本数据交换格式,类似于XML,比XML更小、更快,更容易解析。
- Json 独立于语言。
- Json 具有自我描述性,容易理解。
2. 具体使用例子
2.1 JSON对象例子
JSON对象描述:
{
"motor": {
"left": 100,
"right": 20
},
"servo": {
"servo_1": 90
}
}
JSON对象语法说明:
- 这里分别有两个对象(对象是用{}区分),对象分别是motor、servo。
- 对于对象motor来说,有两个字段 left 和 right,它们的值类型是int型,值分别是100和20;
- 对于对象servo来说,有一个字段servo_1,它的值类型是int型,值是90。
2.2 JSON对象数组
JSON数组描述:
{
"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
},
{
"firstName": "Thomas",
"lastName": "Carter"
}
]
}
JSON数组语法说明:
- 这里有一个对象数组(数组用[]区分)employees。
- 每个对象里面有两个字段firstName和lastName,它们的值类型都是String。
重点:
- 无论是JSON对象还是JSON数组,它们的核心都是键值对,也就是key-value形式。
ujson库
该模块允许Python对象和JSON数据格式之间的转换
>>> import ujson
>>> help(ujson)
object <module 'ujson'> is of type module
__name__ -- ujson
dump -- <function>
dumps -- <function>
load -- <function>
loads -- <function>
这里有4个函数:
dump
-
dumps
(将Python的字典数据转换成json字符,数据的最外面都添加一层""变为字符串,这也是数据的序列化
步骤) load
-
loads
(将json字符串数据转换为字典或列表(去掉外面一层""),这个也是反序列化
的步骤)
.dump()和.load()主要用来读写json文件函数
dumps —— 字典或者列表转换成json字符
- 将Python的字典数据转换成json字符,数据的最外面都添加一层""变为字符串,这也是数据的序列化步骤
例子1:
# 导入模块
import ujson
# 构造字典
data = {
'id': 1,
'name': 'test1',
'age': '1'
}
json_str1 = ujson.dumps(data)
print(type(json_str1),json_str1)
打印结果:
>>> %Run -c $EDITOR_CONTENT
<class 'str'> {"name": "test1", "id": 1, "age": "1"}
>>>
例子2:
# 导入模块
import ujson
# 构造列表
data1 = [{
"id": 1,
"name": "test1",
"age": "1"
}, {
"id": 2,
"name": "test2",
"age": "2"
}]
# python列表类型转换为json字符串
json_str2 = ujson.dumps(data1)
print(type(json_str2),json_str2)
打印结果:
>>> %Run -c $EDITOR_CONTENT
<class 'str'> [{"name": "test1", "id": 1, "age": "1"}, {"name": "test2", "id": 2, "age": "2"}]
>>>
dump —— json字符写入文件
例子:
# 导入模块
import ujson
import os
list = ['Apple', 'Huawei', 'selenium', 'java', 'python']
# 写入文件,json.txt文件最初是空白文件
with open('json.txt', 'w') as f:
ujson.dump(list, f)
# 读取文件
with open('json.txt', 'r') as f:
print(f.read())
打印结果:
>>> %Run -c $EDITOR_CONTENT
["Apple", "Huawei", "selenium", "java", "python"]
>>>
loads —— 将json字符串数据转换为字典或列表
- 将json字符串数据转换为字典或列表(去掉外面一层""),这个也是反序列化的步骤。
例子1:
# 导入模块
import ujson
# 构造字典
data = '''[{
"id": 1,
"name": "test1",
"age": "1"
}, {
"id": 2,
"name": "test2",
"age": "2"
}]'''
# json字符串转为python列表类型
json_str1 = ujson.loads(data)
print(type(json_str1),json_str1)
print(json_str1[0]['id'])
print(json_str1[0]['name'])
print(json_str1[0]['age'])
打印结果:
>>> %Run -c $EDITOR_CONTENT
<class 'list'> [{'id': 1, 'name': 'test1', 'age': '1'}, {'id': 2, 'name': 'test2', 'age': '2'}]
1
test1
1
>>>
例子2:
# 导入模块
import ujson
# 构造字典
data = '''{
"id": 1,
"name": "test1",
"age": "1"
}'''
# json字符串转为python列表类型
json_str1 = ujson.loads(data)
print(type(json_str1),json_str1)
print(json_str1['id'])
print(json_str1['name'])
print(json_str1['age'])
打印结果:
>>> %Run -c $EDITOR_CONTENT
<class 'dict'> {'id': 1, 'name': 'test1', 'age': '1'}
1
test1
1
>>>
load —— 将文件json数据转换为字典或列表
例子:
# 导入模块
import ujson
import os
# 读取文件
with open('json.txt', 'r') as f:
result = ujson.load(f)
print(result)
打印结果:
>>> %Run -c $EDITOR_CONTENT
['Apple', 'Huawei', 'selenium', 'java', 'python']
>>>
本章内容相对比较简单易懂,不需要花费太多时间,希望各位同学可以拷贝一下源码去玩玩。