这篇教程关于 Python json中load和loads区别写得很实用,希望能帮到您。
一、相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化序列化是将对象状态转化为可保存或可传输格式的过程。 变量内容从序列化的对象重新读到内存里称之为反序列化反序列化是流转换为对象。
二、区别
1.load 和 loads (反序列化)load:针对文件句柄,将json 格式的字符转换为dict ,从文件中读取 (将string 转换为dict ) a_json = json.load(open('demo.json','r')) loads:针对内存对象,将string 转换为dict (将string转换为dict) a = json.loads('{'a':'1111','b':'2222'}')
2.dump 和 dumps(序列化)dump:将dict类型转换为json 字符串格式,写入到文件 (易存储) a_dict = {'a':'1111','b':'2222'}json.dump(a_dict, open('demo.json', 'w') dumps:将dict转换为string (易传输) a_dict = {'a':'1111','b':'2222'}a_str = json.dumps(a_dict) 总结: 根据序列化和反序列的特性 - loads: 是将
string 转换为dict - dumps: 是将
dict 转换为string - load: 是将里
json 格式字符串转化为dict ,读取文件 - dump: 是将
dict 类型转换为json 格式字符串,存入文件
三、JSON进阶
1.序列化# 使用class对象的__dict__方法class Student(object): def __init__(self, name, age, score): self.name = name self.age = age self.score = scoreimport jsons = Student('Bob', 20, 88)print(json.dumps(s, default=lambda obj: obj.__dict__))
2.反序列化#Python学习交流群:531509025def dict2student(d): return Student(d['name'], d['age'], d['score'])json_str = '{"age": 20, "score": 88, "name": "Bob"}'print(json.loads(json_str, object_hook=dict2student))
四、python中的序列化和反序列化Python 提供两个模块来实现序列化:cPickle 和pickle 。这两个模块功能是一样的,区别在于cPickle 是C语言写的,速度快,pickle 是纯Python 写的,速度慢。
- 变量从内存中变成可存储或传输的过程称之为序列化,在
Python 中叫pickling - 变量内容从序列化的对象重新读到内存里称之为反序列化,即
unpickling try: import cPickle as pickleexcept ImportError: import pickle
1.将内存对象存取到磁盘a = dict(a=1, b=2, c=3)pickle.dumps(a) # 将对象序列化为str然后存入文件a = dict(a=1, b=2, c=3)pickle.dump(a, open('a.txt', 'wb')) # 使用dump直接把对象序列化为file-like Object,注意是二进制存储
2.从磁盘读取到内存对象pickle.load(open('a.txt', 'rb')) #从file-like Object中直接反序列化出对象 到此这篇关于关于 Python json 中load和loads区别的文章就介绍到这了,更多相关 Python json中load和loads区别内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! Python卷积神经网络图片分类框架详解分析 Python Flask搭建yolov3目标检测系统详解流程 |