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 相关文章推荐
web.py 十分钟创建简易博客实现代码
Apr 22 Python
Python的装饰器用法学习笔记
Jun 24 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
python匹配两个短语之间的字符实例
Dec 25 Python
Python API 自动化实战详解(纯代码)
Jun 11 Python
python async with和async for的使用
Jun 20 Python
Python range、enumerate和zip函数用法详解
Sep 11 Python
python3图片文件批量重命名处理
Oct 31 Python
10个Python面试常问的问题(小结)
Nov 20 Python
Django Model中字段(field)的各种选项说明
May 19 Python
Python图像处理之膨胀与腐蚀的操作
Feb 07 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+mysql一个名片库程序
2006/10/09 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
需要发散思维学习PHP
2009/06/29 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
php和asp语法上的区别总结
2019/05/12 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
2017/02/27 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
JavaScript使用math.js进行精确计算操作示例
2018/06/19 Javascript
NodeJS加密解密及node-rsa加密解密用法详解
2018/10/12 NodeJs
vue单页面在微信下只能分享落地页的解决方案
2019/04/15 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
Vue如何实现变量表达式选择器
2021/02/18 Vue.js
零基础写python爬虫之神器正则表达式
2014/11/06 Python
简单介绍利用TK在Python下进行GUI编程的教程
2015/04/13 Python
python实现中文转换url编码的方法
2016/06/14 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
2019年Java面试必问之经典试题
2012/09/12 面试题
软件设计的目标是什么
2016/12/04 面试题
分层教学实施方案
2014/03/19 职场文书
三人合伙协议书范本
2014/10/29 职场文书
《穷人》教学反思
2016/02/19 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python
nginx容器方式反向代理实战
2022/04/18 Servers
python使用shell脚本创建kafka连接器
2022/04/29 Python