序列化模块
本站寻求有缘人接手,详细了解请联系站长QQ1493399855
一. 序列化模块json
把其他的数据类型 转换成 字符串 bytes 是序列化的过程
能存在文件和在网上传输的只能是bytes, 所以要转化成字符串
json模块只支持字符串, 字典(key不能是数字, 数字会变成字符串), 列表, 数字
json的对象不能含有元组, 集合, 字典的键不能是数字, 键如果是元组会直接报错
文件中读出来的, 网络上接收来的不能直接运行, 会有恶意代码
json在所有的语言之间都通用, 包括后端语言 java c c++ c# 和前端语言
json能够处理的数据类型非常有限
dic = {'key' : 'value','key2' : 'value2'}
import json
ret = json.dumps(dic) # 序列化
print(ret)res = json.loads(ret) # 反序列化
print(res)向文件中记录字典
import json
dic = {'key' : 'value','key2' : 'value2'}
ret = json.dumps(dic)
with open('json_file','a') as f:f.write(ret)从文件中读取字典
with open('json_file','r') as f:str_dic = f.read()
dic = json.loads(str_dic)
print(dic.items())dump load 是直接操作文件的
dic = {'key1' : 'value1','key2' : 'value2'}
with open('json_file','a') as f:json.dump(dic,f)with open('json_file','r') as f:dic = json.load(f)
print(dic.items())json不支持连续存取, 需要一个个加上换行符放进文件中, 再一个个地取出来
dic = {'key1' : 'value1','key2' : 'value2'}with open('json_file','a') as f:str_dic = json.dumps(dic)f.write(str_dic+'
')str_dic = json.dumps(dic)f.write(str_dic + '
')str_dic = json.dumps(dic)f.write(str_dic + '
')with open('json_file','r') as f:for line in f:dic = json.loads(line.strip())print(dic.keys())dumps loads在内存中做数据转换 :dumps 数据类型 转成 字符串 序列化loads 字符串 转成 数据类型 反序列化
dump load直接将数据类型写入文件,直接从文件中读出数据类型dump 数据类型 写入 文件 序列化load 文件 读出 数据类型 反序列化dic = {'key':'你好'}
print(json.dumps(dic,ensure_ascii=False)) # 没有ensure_ascii会输出{"key": "u4f60u597d"}import json
data = {'username':['李华','二愣子'],'sex':'male','age':16}
json_dic2 = json.dumps(data,sort_keys=True,indent=4,separators=(',',':'),ensure_ascii=False)
# 按键排列, 按,和:换行, 换行时空4个空格
print(json_dic2)