MicroPython 库 —— 快速上手ujson

文章目录

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

MicroPython 库 —— 快速上手ujson

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']
>>>  

本章内容相对比较简单易懂,不需要花费太多时间,希望各位同学可以拷贝一下源码去玩玩。

上一篇:移动应用表单设计秘籍


下一篇:c++字符串初始化出现问题