Python之json使用
一、概念
- json是一种通用的数据类型,任何语言都认识
- 接口返回的数据类型都是json
- 长得像字典,形式也是k-v { }
- 其实json是字符串
- 字符串不能用key、value来取值,要先转成字典才可以
- 格式如下:
{ "error_code": 0,#要使用双引号,如果是单引号则运行时会报错,可以上网做在线json格式校验 "stu_info": [ { "id": 309, "name": "小白", "sex": "男", "age": 28, "addr": "河南省济源市北海大道32号", "grade": "天蝎座", "phone": "18512572946", "gold": 100 }, { "id": 310, "name": "小白", "sex": "男", "age": 28, "addr": "河南省济源市北海大道32号", "grade": "天蝎座", "phone": "18516572946", "gold": 100 } ] }
二、json操作
1、json串转成字典:
(1).loads()方法
import json#引用json模块 res=json.loads(s) print(res)#打印字典 print(type(res))#打印res类型 print(res.keys())#打印字典的所有Key
- 要先读文件,然后再转换:
f=open('stus.json',encoding='utf-8') content=f.read()#使用loads()方法,需要先读文件 user_dic=json.loads(content) print(user_dic)
(2).load()方法
import json f=open('stus.json',encoding='utf-8') user_dic=json.load(f) print(user_dic)
(3)区别
- loads()传的是字符串,而load()传的是文件对象
- 使用loads()时需要先读文件再使用,而load()则不用
2、字典转成json串:
- 文件里只能写字符串,但可以把字典转成json串,json串是字符串,可以存到文件里
(1).dumps()方法
stus={'xiaojun':'123456','xiaohei':'7891','abc':'11111'} #先把字典转成json res2=json.dumps(stus) print(res2)#打印字符串 print(type(res2))#打印res2类型
- .dumps()方法:把字典转成json串
with open('stus.txt','w',encoding='utf-8' as f:#打开文件 f.write(res2)#在文件里写入转成的json串
- 使用.dumps()方法前,要先打开文件,再写入:
stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'} res2=json.dumps(stus,indent=8,ensure_ascii=False) print(res2) with open('stus.json','w',encoding='utf-8') as f:#使用.dumps()方法时,要写入 f.write(res2)
(2)dump()方法
stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'} f=open('stus2.json','w',encoding='utf-8') json.dump(stus,f,indent=4,ensure_ascii=False)
(3)区别
- .dump()不需要使用.write()方法,只需要写哪个字典、哪个文件即可;而.dumps()需要使用.write()方法写入
- 如果要把字典写到文件里面的时候,dump()好用;但如果不需要操作文件,或需要把内容存到数据库和Excel,则需要使用dumps()先把字典转成字符串,再写入
(4)dump\dumps参数
- .dumps\dump中使用参数indent,为字符串换行+缩进:
res2=json.dumps(stus.indent=4) print(res2)#打印字符串 #结果为: ''' { "xiaojun": "123456", "xiaohei": "7891", "lrx": "hailong", "tanailing": "111111" } '''
- .dumps\dump中使用参数ensure_ascii,为内容输出为中文:
res2=json.dumps(stus,indent=4,ensure_ascii=False)#为False时内容输出显示正常的中文,而不是转码 print(res2)
3、不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。
1、pycharm使用小技巧之分屏:
在python文件上右键——Split Vertically,即可达到分屏效果:
2、pycharm使用小技巧之颜色渲染:
文件为.json结尾时,输出的内容会有染色渲染:
with open('stus.json','w',encoding='utf-8' as f:#打开文件
每天进步一点点,快乐生活多一点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现