json模块
pickle模块和shelve模块序列化的得到数据只能被Python所解析。
通常企业开发不可能做一个单机版,都需要联网进行计算机之间的交互。
我们必须保证这个数据能够跨平台使用。
JSON是什么?
JavaScript object notation 就是对象表示法。
对我们而言JSON就是通用的数据格式,任何语言都能够解析。
json中数据格式与Python中的数据类型的对照
json数据格式 | Python数据类型 |
{} | dict |
[] | list |
int/float | int/float |
true/false | True/False |
null | None |
json的语法规范
最外层通常是一个字典或列表。
{} or []
只要你想写一个json格式的数据,那么最外层直接写{}
字符串必须是双引号。
你可以在其中嵌套任意多的层次。
json模块的核心功能
dump dumps
load loads
不带s 的封装了write和read功能
a.json文件
{ "name":"msj", "age":25, "gender":"male" }
反序列化
import json with open(r'a.json','r',encoding='utf-8') as f: res = json.loads(f.read()) print(res) #{'name': 'msj', 'age': 25, 'gender': 'male'}
反序列化load()
with open(r'a.json','r',encoding='utf-8') as f: res=json.load(f) print(res)
序列化dumps()
dic = { 'egon':{ "age":18, "ismale":True, 'add':None } } res = json.dumps(dic) with open(r'b.json','w',encoding='utf-8') as f: f.write(res)
输入符合Python语法的格式内容会被转换为符合json语法的。
{"egon": {"age": 18, "ismale": true, "add": null}}
反序列化dump
with open(r'c.json','w',encoding='utf-8') as f: json.dump(dic,f)