- json是通用的数据类型,所有语言都认识 (接口的返回值一般都是json字符串)
- k-v {} json中的key value必须用双引号包起来 校验json格式是否正确 www.bjson.com
- json是字符串
json串转成字典:json.loads()
1 import json 2 s=''' 3 { 4 "error_code": 0, 5 "stu_info": [ 6 { 7 "id": 309, 8 "name": "小白", 9 "sex": "男", 10 "age": 28, 11 "addr": "河南省济源市北海大道32号", 12 "grade": "天蝎座", 13 "phone": "18512572946", 14 "gold": 100 15 }, 16 { 17 "id": 310, 18 "name": "小白", 19 "sex": "男", 20 "age": 28, 21 "addr": "河南省济源市北海大道32号", 22 "grade": "天蝎座", 23 "phone": "18516572946", 24 "gold": 100 25 } 26 ] 27 } 28 ''' 29 res=json.loads(s) # 将json串转换成字典 30 print(res) 31 print(type(res)) 32 print(res.keys())
result:
1 {'stu_info': [{'sex': '男', 'phone': '18512572946', 'id': 309, 'grade': '天蝎座', 'name': '小白', 'gold': 100, 'age': 28, 'addr': '河南省济源市北海大道32号'}, {'sex': '男', 'phone': '18516572946', 'id': 310, 'grade': '天蝎座', 'name': '小白', 'gold': 100, 'age': 28, 'addr': '河南省济源市北海大道32号'}], 'error_code': 0} 2 <class 'dict'> 3 dict_keys(['stu_info', 'error_code'])
json.loads()和json.load()区别
1 f=open('stus.json',encoding='utf-8')
2 user_dic=json.loads(f.read()) #传入字符串
3 print(user_dic)
4
5 f=open('stus.json',encoding='utf-8')
6 user_dic=json.load(f) #直接传入文件对象
7 print(user_dic)
字典转成json串:json.dumps()
1 import json 2 stu={'小小':'123456','小黑':'23456',"小臂":'45655','ll':'455756454'} 3 res2=json.dumps(stu,indent=8,ensure_ascii=False) #indent控制缩进 ensure_ascii 正常显示中文 4 print(type(res2)) 5 print(res2) 6 with open('stus.json','w',encoding='utf-8') as f: 7 f.write(res2) 8 9 #dump() 如果要把字典写入文件中,用dump比dumps方便 dump()和load()都是和文件相关的 10 json.dump(stu, f, indent=4, ensure_ascii=False) #dump直接将字典写到文件中,不需要再写一次write()
result:
<class 'str'> { "ll": "455756454", "小臂": "45655", "小黑": "23456", "小小": "123456" }