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

首先说明基本功能:

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

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

看代码实例:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

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的区别,见代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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-92dc0d929363in <module>()

----1 = 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。

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

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

时间: 2024-08-22 04:46:39

python json.dumps() json.dump()的区别的相关文章

Python中的Json模块dumps、loads、dump、load函数介绍

Json模块dumps.loads.dump.load函数介绍 1.json.dumps() json.dumps() 用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数. 2.json.dump() json.dump()用于将dict类型的数据转成str,并写入到json文件中.下面两种方法都可以将数据写入json文件 import json name_emb = {'a':'1111','b':'2222','

python接口测试之json模块的使用

json.dumps() json.loads() json.dump json.load 一.json.dumps() 将python字典类型转换成json对象 import json # Python 字典类型转换为 JSON 对象 data = { 'no' : 1, 'name' : 'Runoob', 'url' : 'http://www.runoob.com' } json_str = json.dumps(data) print ("Python 原始数据:", rep

python中json.load()、json.loads()、json.dump()、json.dumps()的区别

json.load()从文件中读取json字符串 json.loads()将json字符串转换为字典类型 json.dumps()将python中的字典类型转换为字符串类型 json.dump()将json格式字符串写到文件中 1.json.load() with open('text.json','r',encoding='utf-8') as f : print(json.load(f)) { "name": "anthony", "sex"

json.dumps与json.dump的区别 json.loads与json.load的区别

json.dumps是将一个Python数据类型列表进行json格式的编码解析, 示例如下: >>> import json #导入python 中的json模块>>> l = ['iplaypython',[1,2,3], {'name':'xiaoming'}] #创建一个l列表>>> encoded_json = json.dumps(l) # 将l列表,进行json格式化编码>>> print repr(l)>>&

python中json文件处理涉及的四个函数json.dumps()和json.loads()、json.dump()和json.load()的区分

一.概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串) (2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典) 2.json.dump()和json.load()主要用来读写json文件函数 二.代

json模块中dumps()与dump()区别

dumps是将dict转化成json字符串格式,loads是将json字符串转化成dict格式. dump和load也是类似的功能,只是与文件操作结合起来了. dump(写入内容,文件对象) 和load(文件对象) 代码实现: def write_file(): like_num = input('请输入您喜欢的数字:') with open('C:\\Users\\Administrator\\Desktop\\data.json','w') as fw: json.dump(like_num

python json.dumps() 中文乱码问题

python 输出一串中文字符,在控制台上(控制台使用UTF-8编码)通过print 可以正常显示,但是写入到文件中之后,中文字符都输出成ascii编码了.英文字符能正常显示可读字符. 原因:json.dumps 序列化时默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False:更深入分析,是应为dJSON object 不是单纯的unicode实现,而是包含了混合的unicode编码以及已经用utf-8编码之后的字符串. 可行的方式如下: 1 import os

Python下调用json.dumps中文显示问题解决办法

json.dumps在默认情况下,对于非ascii字符生成的是相对应的字符编码,而非原始字符,例如: import json js = json.loads('{"haha": "哈哈"}') print json.dumps(js) 得到的结果是{"haha": "\u54c8\u54c8"}, 中文字符打印出来的是utf-8转码...这个时候查血了docs.python.org,还有个参数ensure_ascii 调用了j

python中json.dumps使用的坑以及字符编码

我们知道,python中的字符串分普通字符串和unicode字符串,一般从数据库中读取的字符串会自动被转换为unicode字符串 下面回到重点,使用json.dumps时,一般的用法为: >>> obj={"name":"测试"} >>> json.dumps(obj)'{"name": "\\u6d4b\\u8bd5"}' >>> print json.dumps(obj