json模块中 序列化与反序列化

1.什么是序列化&反序列化

内存中数据类型---->序列化------>特定的格式(json格式或者pickle格式)

互相转换方法1.
res=eval("{‘egon‘:111}")
print(res)
print(type(res)) 

#{‘egon‘: 111}
<class ‘dict‘>

res = str({‘egon‘:666})
print(res)
print(type(res))

#{‘egon‘: 666}
<class ‘str‘>

2、为何要序列化

#    序列化指的是把内存的数据类型转换成一个特定的格式的内容
#    该格式的内容
1、可用于存储=>用于存档
2、传输给其他平台使用=>跨平台数据交互
  python   —————————    java
  列表     特定的格式      数组
3.json 验证:格式兼容的是所有语言通用的数据类型。并不能识别所有语言

强调:
    针对用途1的特定格式,一种专用格式,只有python能够识别:pickle
    针对用途2的特定格式,一种通用,能够被所有语言识别的格式:json
    针对json中,数据类型必须加上双引号“” 否则会报错

3、如何序列化与反序列化

序列化

import json

res = json.dumps([1,‘aaa‘,True,False])
print(res,type(res)) #  "[1,"aaa",true,false]"  注意:双引号


反序列化

import json

res = json.dumps([1,‘aaa‘,True,False])
l = json.load(res)
print(l,type(l))  #[1,‘aaa‘,True,False]


序列化的结果写入文件的方法
1.复杂方法
import json

res = json.dumps([1,‘aaa‘,True,False])
with open(‘test.json‘,mode=‘wt‘,encoding=‘utf-8‘)as f:
    f.write(res)
2.简单方法
with open(‘test.json‘,mode=‘wt‘,encoding=‘utf-8‘)as f:
    json.dump([1,‘aaa‘,True,False],f)
    #  "[1,"aaa",true,false]" <class‘str‘>


从文件读取json格式的字符串进行反序列化操作方法
1.复杂方法
with open("test.json",mode="rt",encoding="utf-8") as f:
    json_res = f.read()
    res = json.loads(json_res)
    print(res,type(res))
    #[1, ‘aaa‘, True, False] <class ‘list‘>
   
2.简单方法
with open("test.json",mode="rt",encoding="utf-8") as f:
    l=json.load(f)
    print(l,type(l))

4. dumps/loads 区别

json.dumps(obj)	将python数据转化为json
json.loads(s)	将json数据转换为python的数据
json.dump(obj, fp)	转换为json并保存到文件中
json.load(fp)	从文件中读取json,并转化为python数据

json模块中 序列化与反序列化

上一篇:python 脚本操作文件


下一篇:文件监视器数量达到系统限制