json是一种通用的数据类型,任何语言都认识,长得像字典,形式也是k-v { },其实 json 是字符串。字符串不能用key、value来取值,要先转成字典才可以
{
"error_code": 0,#要使用双引号,如果是单引号则运行时会报错,可以上网做在线json格式校验
"stu_info": [
{
"id": 0,
"name": "a",
"sex": "男",
"age": 22,
"grade": "天蝎座",
"gold": 100
},
{
"id": 1,
"name": "b",
"sex": "男",
"age": 23,
"grade": "天蝎座",
"gold": 100
}
]
}
区别:loads()传的是字符串,而load()传的是文件对象,使用loads()时需要先读文件再使用,而load()则不用
loads:
import json
f=open('stus.json',encoding='utf-8')
content=f.read()#使用loads()方法,需要先读文件
user_dic=json.loads(content)
print(user_dic)
load:
import json
f=open('stus.json',encoding='utf-8')
user_dic=json.load(f)
print(user_dic)
区别:.dump()不需要使用.write()方法,只需要写哪个字典、哪个文件即可;而.dumps()需要使用.write()方法写入;如果要把字典写到文件里面的时候,dump()好用;但如果不需要操作文件,或需要把内容存到数据库和Excel,则需要使用dumps()先把字典转成字符串,再写入
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)
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)
.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)
### 不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。