关于 Python json中load和loads区别
作者:小小程序员ol 发布时间:2021-04-24 20:30:51
标签: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 = score
import json
s = Student('Bob', 20, 88)
print(json.dumps(s, default=lambda obj: obj.__dict__))
2.反序列化
#Python学习交流群:531509025
def 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 pickle
except 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中直接反序列化出对象
来源:https://www.cnblogs.com/python960410445/p/14978742.html
0
投稿
猜你喜欢
- 一个拖动层和Onmouse自动下拉效果,IE支持,不支持ff。下面所示的效果四个小块可以拖动到页面任意点,大黑块可以连同四个小块随动。<
- function chinese2unicode(Str) &nbs
- 本文实例为大家分享了python实现超市管理系统的具体代码,供大家参考,具体内容如下这个相比上个程序简单很多,首先他没有太过复杂的逻辑关系,
- 前言相信各位一定有收到过这样的群发短信,据说还被归类为玩转微信的五大技巧之一╮(╯▽╰)╭但,其实,只要跑一下脚本,就轻松找出删除自己的好友
- 1. 多曲线1.1 使用pyplot方式import numpy as npimport matplotlib.pyplot as pltx
- 1.在查询分析器理启动或停止SQL Agent服务启动:use mastergoxp_cmdshell 'net start SQL
- 本文实例讲述了Python实现批量读取图片并存入mongodb数据库的方法。分享给大家供大家参考,具体如下:我的图片放在E:\image\中
- 问题你的程序崩溃后该怎样去调试它?解决方案如果你的程序因为某个异常而崩溃,运行 python3 -i someprogram.py 可执行简
- 初学ASP,程序是能勉强写出来了,但若每进行一次网站页面的改版,所有的源程序都将进行一次移植手术。为此所耗费的人力精力不计其数,甚至一不小心
- 项目简介之前学python的时候 写了个游戏来练手 用的是 pygame 没有别的依赖只用了一两百行的代码就实现了 整体来说功能并不算完整项
- 我们在Python中经常使用会用到matplotlib画图,有些曲线和点的形状、颜色信息长时间不用就忘了,整理一下便于查找。安装matplo
- 前言Windows10 在 UWP 应用中支持亚克力画刷,可以在部件的底部绘制亚克力效果的背景图。下面我们使用 QLabel 来模拟这个磨砂
- os.path包os.path包主要用于处理字符串路径,比如'/home/zikong/doc/file.doc',提取出有
- 这篇文章主要介绍了Python OrderedDict的使用案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 一、模块模块可以看成是一堆函数的集合体。一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块。如果这个py文件的文件名为mo
- 环境: 开发的IDE:JBuilderX 使用的数据库:MS Sql Server 2000 使用的数据库驱动:JSQL Driver(JD
- SQL查询输出,根据表内某字段为准,输出不重复记录,或删除掉重复的记录,保留所需要的记录。今儿见一朋友在蓝色里问起(查询不重复记录~),想想
- 很久没有写文章,最近一直在忙于找工作和找房子。哎,现在终于安定下来了,哎,又叹息一下,是因为我把去淘宝面试的机会也推掉了,本来以为要卷铺盖回
- ADO也提供更有效率方法来取得数据。GetRows 方法传回一个二维的数组变量,每一行对应Recordset中的一笔记录,且每
- 本文实例讲述了python实现bucket排序算法。分享给大家供大家参考。具体实现方法如下:def bucketSort(a, n, buc