python json.dumps() json.dump()的区别详解


Posted in Python onJuly 14, 2020

以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。

首先说明基本功能:

dumps是将dict转化成str格式,loads是将str转化成dict格式。

dump和load也是类似的功能,只是与文件操作结合起来了。

看代码实例:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [11]: json.loads(b)
Out[11]: {u'age': 29, u'name': u'wang'}
 
In [12]: print type(json.loads(b))
<type 'dict'>

然后再看dump和dumps的区别,见代码:

In [1]: import json
 
In [2]: a = {'name': 'wang', 'age': 29}
 
In [3]: b = json.dumps(a)
 
In [4]: print b, type(b)
{"age": 29, "name": "wang"} <type 'str'>
 
In [5]: c = json.dump(a)
---------------------------------------------------------------------------
TypeError                 Traceback (most recent call last)
<ipython-input-5-92dc0d929363> in <module>()
----> 1 c = json.dump(a)
 
TypeError: dump() takes at least 2 arguments (1 given)

这里提示我们少一个参数,我们看一下帮助文件(iPyhton中可以直接使用help(json.dumps)来查看帮助文件):

dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` to a JSON formatted ``str``. 

dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding='utf-8', default=None, sort_keys=False, **kw)
Serialize ``obj`` as a JSON formatted stream to ``fp`` (a
``.write()``-supporting file-like object). 

简单说就是dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str然后存入文件中;而dumps直接给的是str,也就是将字典转成str。

例子见代码(注意文件操作的一些小细节):

In [1]: import json
 
In [2]: a = {'name': 'wang'}
 
In [3]: fp = file('test.txt', 'w')
 
In [4]: type(fp)
Out[4]: file
 
In [5]: json.dump(a, fp)
 
In [6]: cat test.txt
 
In [7]: fp.close()
 
In [8]: cat test.txt
{"name": "wang"}
In [9]: json.load(fp)
---------------------------------------------------------------------------
ValueError                Traceback (most recent call last)
<ipython-input-9-0064dabedb17> in <module>()
----> 1 json.load(fp)
 
/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
  285
  286   """
--> 287   return loads(fp.read(),
  288     encoding=encoding, cls=cls, object_hook=object_hook,
  289     parse_float=parse_float, parse_int=parse_int,
 
ValueError: I/O operation on closed file
 
In [10]: fp = file('test.txt', 'r')
 
In [11]: json.load(fp)
Out[11]: {u'name': u'wang'}

注:实际中dump用的较少。

到此这篇关于python json.dumps() json.dump()的区别详解的文章就介绍到这了,更多相关python json.dumps() json.dump()内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python二叉树的实现实例
Nov 21 Python
一个简单的python程序实例(通讯录)
Nov 29 Python
python常用知识梳理(必看篇)
Mar 23 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
python中set()函数简介及实例解析
Jan 09 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
Python 音频生成器的实现示例
Dec 24 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
python中sys模块是做什么用的
Aug 16 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
如何通过安装HomeBrew来安装Python3
Dec 23 Python
Python 实现绘制子图及子图刻度的变换等问题
May 31 Python
pandas to_excel 添加颜色操作
Jul 14 #Python
Python数据可视化实现多种图例代码详解
Jul 14 #Python
简单的Python人脸识别系统
Jul 14 #Python
Python局部变量与全局变量区别原理解析
Jul 14 #Python
Python迭代器协议及for循环工作机制详解
Jul 14 #Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 #Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 #Python
You might like
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
提升PHP执行速度全攻略(下)
2006/10/09 PHP
用PHP+java实现自动新闻滚动窗口
2006/10/09 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
2017/10/12 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
python引用DLL文件的方法
2015/05/11 Python
TensorFlow实现非线性支持向量机的实现方法
2018/04/28 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
Python基于locals返回作用域字典
2020/10/17 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
FC-Moto西班牙:摩托车手最大的购物场所之一
2019/04/11 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
毕业生自我鉴定
2013/12/04 职场文书
高二美术教学反思
2014/01/14 职场文书
大学生自我鉴定书
2014/03/24 职场文书
食品安全汇报材料
2014/08/18 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
56句经典英文座右铭
2019/08/09 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python