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 - 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。
例子见代码(注意文件操作的一些小细节):
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 - 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入门,如果有基础,最好的办法是看官方文档;
如果没基础,推荐可以找一些书翻来看看,下面这本就不错
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架