序列化模块

json模块

json是一个序列化模块,主要用于跨语言传输数据,包含了两个关键函数

  • json.dumps(): 将python数据类型转换成json格式字符串
  • json.loads(): 将json格式字符串转换成对应的数据类型

官方文档:https://docs.python.org/zh-cn/3/library/json.html

Python 编码为 JSON 类型转换对应表

PythonJSON
dictobject
list, tuplearray
strstring
int, float, int- & float-derived Enumsnumber
Truetrue
Falsefalse
Nonenull

JSON 解码为 Python 类型转换对应表

JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

python转换json (dumps)

import json

d = {'username': 'kevin', 'pwd': 123}
print(d, type(d))
# {'username': 'kevin', 'pwd': 123} <class 'dict'>

res = json.dumps(d)
print(res, type(res))
# {"username": "kevin", "pwd": 123} <class 'str'>

'''双引号是json格式数据独有的标志符号'''

res = '{"username":"kevin","pwd":123}'
print(res)
# {"username":"jason","pwd":123}  也算json格式

json转换python(loads)

res = json.loads(res)

print(res, type(res))
# {'username': 'kevin', 'pwd': 123} <class 'dict'>

python转换json写入文件(dump)

import json

d = {'username': 'kevin', 'pwd': 123}
with open(r'info.json', 'w', encoding='utf8') as f:
    json.dump(d, f)

读取json文件转换python(load)

with open(r'info.json', 'r', encoding='utf8') as f:
    res = json.load(f)
    print(res, type(res))
    # {'username': 'kevin', 'pwd': 123} <class 'dict'>

针对需要存取中文数据处理

使用前

import json

d = {"国籍": "中国"}
with open(r'info.json', 'w', encoding='utf8') as f:
    json.dump(d, f)
    

image-20220331164122611

使用后

# ensure_ascii 关键字参数
import json

d = {"国籍": "中国"}
with open(r'info.json', 'w', encoding='utf8') as f:
    json.dump(d, f,ensure_ascii=False)

image-20220331164407739

Last modification:April 3, 2022
如果觉得我的文章对你有用,请随意赞赏