python中json的基本使用:
- json是一种通用的数据类型
- 一般情况下接口返回的数据类型都是json
- 长得像字典,形式也是k-v{}
- 但其实是字符串
- 字符串不能使用key,value来取值,所以要先转换为字典才可以
json格式:
{
"database": {
"host": "127.0.0.1",
"user": "root",
"password": "320715",
"database": "dejavu"
},
"database_type": "mysql"
}
json操作:
1.json转换为字典
import json
# load是对文件直接进行处理,loads需要读取文件内容后处理
configpath = "f:\\dejavu-master\\dejavu.cnf.SAMPLE"
with open(configpath) as f:
... config = json.load(f)
... print(config)
...
{'database': {'host': '127.0.0.1', 'user': 'root', 'password': '320715', 'database': 'dejavu'}, 'database_type': 'mysql'}
# 使用loads方法需要先读取文件内的内容
with open(configpath) as f:
... content = f.read()
... config = json.loads(content)
... print(config)
...
{'database': {'host': '127.0.0.1', 'user': 'root', 'password': '320715', 'database': 'dejavu'}, 'database_type': 'mysql'}
2.字典转换为json串
# (1)dumps()方法
stus = {'xiaojun':'123456','xiaohei':'7891','abc':'11111'}
res2 = json.dumps(stus) #先把字典转成json
print(res2)
print(type(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,ensuer_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,ensure_ascii=False)
dump()不需要使用.write()方法,只需要写那个字典,那个文件即可;而.dumps()需要使用.write()方法写入.
如果把字典写到文件里面的时候,dump()好用;但是如果不需要操作文件,或需要把内容存储到数据库何excel,则需要使用dumps()先把字典转换成字符串,再写入.
- 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)
Attention:
不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。