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实现电子词典
Apr 23 Python
python网络编程学习笔记(10):webpy框架
Jun 09 Python
python 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
python3使用smtplib实现发送邮件功能
May 22 Python
python操作redis方法总结
Jun 06 Python
python实现换位加密算法的示例
Oct 14 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
对python生成业务报表的实例详解
Feb 03 Python
Python模块 _winreg操作注册表
Feb 05 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
PHP 文件扩展名 获取函数
2009/06/03 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
2016/01/14 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Python的requests网络编程包使用教程
2016/07/11 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
python高阶爬虫实战分析
2018/07/29 Python
Python WSGI的深入理解
2018/08/01 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
python文件选择对话框的操作方法
2019/06/27 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
Python 实现自动导入缺失的库
2019/10/29 Python
关于python中的xpath解析定位
2020/03/06 Python
几款好用的python工具库(小结)
2020/10/20 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
Hoover胡佛官网:美国吸尘器和洗地机品牌
2019/01/09 全球购物
《跨越百年的美丽》教学反思
2014/02/11 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
大学生十八大感想
2015/08/11 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书