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

作者:枫飞飞 时间:2023-07-14 03:12:01 

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

首先说明基本功能:

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用的较少。

来源:https://www.cnblogs.com/fengff/p/11008353.html

标签:python,json.dumps(),json.dump()
0
投稿

猜你喜欢

  • MySQL窗口函数实现榜单排名

    2024-01-16 20:22:22
  • flask实现验证码并验证功能

    2022-02-03 07:40:02
  • 在PyCharm导航区中打开多个Project的关闭方法

    2022-08-11 01:39:11
  • 可用性研究:为文字链接扩大可点击区域

    2008-09-18 18:23:00
  • asp如何使用SMTP Service发送邮件?

    2010-06-05 12:43:00
  • Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)

    2023-04-27 13:37:46
  • 得到元素真实的背景颜色的函数

    2008-05-20 12:04:00
  • python 实时得到cpu和内存的使用情况方法

    2023-10-05 20:03:24
  • Python中的类对象示例详解

    2022-03-20 12:40:50
  • 使用OpenCV获取图片连通域数量,并用不同颜色标记函

    2023-10-17 19:58:05
  • Python自动扫雷实现方法

    2023-11-19 19:04:55
  • XML+ JS创建树形菜单

    2013-08-22 08:30:17
  • MySQL性能分析及explain的使用说明

    2024-01-28 05:34:50
  • 实用技巧:优化SQL Server数据库查询方法

    2009-02-04 13:46:00
  • MySQL 的启动选项和系统变量实例详解

    2024-01-23 06:04:52
  • Mootools常用方法扩展(五)

    2009-03-03 12:12:00
  • python小技巧之批量抓取美女图片

    2022-09-16 17:25:58
  • Python语法详解之decorator装饰器

    2021-07-15 23:11:45
  • Python+OpenCV目标跟踪实现基本的运动检测

    2023-05-14 14:30:54
  • python绘制箱型图

    2022-10-11 21:33:20
  • asp之家 网络编程 m.aspxhome.com