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 socket实现简单聊天室
Apr 01 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Django objects的查询结果转化为json的三种方式的方法
Nov 07 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Python基于opencv调用摄像头获取个人图片的实现方法
Feb 21 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
python字符串查找函数的用法详解
Jul 08 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
python访问hdfs的操作
Jun 06 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
Python 下载Bing壁纸的示例
Sep 29 Python
关于python中remove的一些坑小结
Jan 04 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
JS实现php的伪分页
2008/05/25 PHP
PHP 读取和编写 XML
2014/11/19 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
Javascript this关键字使用分析
2008/10/21 Javascript
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
2010/08/07 Javascript
有趣的JavaScript数组长度问题代码说明
2011/01/20 Javascript
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
vue 页面跳转的实现方式
2021/01/12 Vue.js
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
Python模拟登录验证码(代码简单)
2016/02/06 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
Jar包的作用是什么
2014/03/30 面试题
新闻记者实习自我鉴定
2013/09/19 职场文书
旅游个人求职信范文
2014/01/30 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书