Python中json的简单读写操作
Python中json的简单读写操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
JSON在python中分别由list和dict组成。
这是用于序列化的两个模块:
- json: 用于字符串和python数据类型间进行转换
- pickle: 用于python特有的类型和python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
json 中dumps把数据类型转换成字符串 dump把数据类型转换成字符串并存储在文件中 loads把字符串转换成数据类型 load把文件打开从字符串转换成数据类型
json是可以在不同语言之间交换数据的,而pickle只在python之间使用。json只能序列化最基本的数据类型,josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),如果是日期格式、类对象!josn就不行了,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。本文主要讲解json的用法.
1 读取json文件
代码如下:
import json file_name = "json.json" try: with open(file_name,"r",encoding="utf-8")as josn_file_handle: json_obj=json.load(josn_file_handle) print(type(json_obj)) # json的标准/常用格式:第一层一般是{},第二层一般是字符串/列表/字典 # json的基本格式:最外层一般是[],第二层一般是{},第三层一般是字符串/列表/字典 print (json_obj['data']['tip']) data_list=json_obj['data']['data'] for duanzi in data_list: duanzi_content=duanzi['group']['text'] print (duanzi_content) print ("*"*50) except FileExistsError as e: #python3的语法 print ("py3文件不存在") except IOError as e: #python2的语法 print ("py2文件不存在") except JSONDecodeError as e: print ("JSON文件解码错误(数据格式不正确|没有内容)")
我写的是使用的python3环境, 如果是python2, print 后面无需使用()
2 将内容写入json文件
代码如下:
import json file_name = "user.txt" try: a1 = dict() a1['姓名'] = "张三" a1['年龄'] = 20 a1['爱好'] = ["羽毛球", "乒乓球"] a2 = dict() a2['姓名'] = "李四" a2['年龄'] = 25 a2['爱好'] = ["篮球", "足球", "橄榄球"] info = dict() info['用户信息'] = [a1, a2] info['用户个数'] = 2 #如何把字典/列表/对象转换为字符串? json_str = json.dumps(info, ensure_ascii=False) #ensure_ascii=False禁用ascii编码 with open(file_name, "w+", encoding="utf-8") as josn_file_handle: josn_file_handle.write(json_str) except FileExistsError as e: print ("py3文件不存在")
这里的文件名称没有使用 .json 后缀, 主要是方便查看写入内容的格式,即json存储格式, 方便我们了解json的存储结构
在这里 我们使用了json_str = json.dumps(info, ensure_ascii=False)来把info的数据类型转化为字符串, 如果不转换的话会出现如下错误:
总结
在做json读写操作时一定要注意传递的参数是字符串还是其他数据类型, 注意格式之间的转换问题, 否则很容易出现错误.
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步