python json 不好用_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()方法

importjson

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,即可达到分屏效果:

3345a2e3dc86fc64591fa6c1edee28a6.png

2、pycharm使用小技巧之颜色渲染:

文件为.json结尾时,输出的内容会有染色渲染:

a5b88464921241d563d7a0cbe4db5381.png

with open('stus.json','w',encoding='utf-8' as f:#打开文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值