一、json数据类型:是字符串
# json通用数据类型,所有语言都可以用
# {k-v}形式存在,里面只能用双引号""
# 定义json字符串,要用'''{}'''格式
#http://www.bejson.com/可以校验json格式对不对
#json串里面是双引号,字典里面是单引号

1 '''{ 2 "error_code": 0, 3 "stu_info": [ 4 { 5 "id": 1660, 6 "name": "小绿", 7 "sex": "男", 8 "age": 28, 9 "addr": "河南省济源市北海大道32号", 10 "grade": "天秤座", 11 "phone": "18612585956", 12 "gold": 100 13 }, 14 { 15 "id": 2159, 16 "name": "小绿", 17 "sex": "男", 18 "age": 28, 19 "addr": "河南省济源市北海大道32号", 20 "grade": "天蝎座", 21 "phone": "18611115556", 22 "gold": 100 23 }, 24 { 25 "id": 2204, 26 "name": "小绿", 27 "sex": "女", 28 "age": 28, 29 "addr": "河南省济源市北海大道12号", 30 "grade": "天蝎座", 31 "phone": "18612832956", 32 "gold": 100 33 }, 34 { 35 "id": 5344, 36 "name": "小绿", 37 "sex": "男", 38 "age": 21, 39 "addr": "河南省济源市北海大道2号", 40 "grade": "天平座", 41 "phone": "18612500886", 42 "gold": 100 43 } 44 ] 45 }'''
基本使用
1 import json #导入模块 2 res=json.loads(s) #loads(),json(字符串),转成字典 3 print(res.keys()) #调用字典方法 4 print(res.values()) #调用字典方法 5 print(res) 6 print(type(res))
1. json序列化(字典转成字符串)方法:
dumps:无文件操作 dump:序列化+写入文件
import json #导入模块
1 # dumps 2 stus={'xiaohong':'123','xiaohei':'456','xiaobai':'789'} 3 res1=json.dumps(stus,indent=4,ensure_ascii=False) # dumps,字典,转换成json字符串 4 with open('stus.json','w',encoding='utf-8') as f: 5 f.write(json.dumps(stus,indent=4,ensure_ascii=False)) #手动写入字典,为json字符串 #要手动写入文件 6 7 # dump 8 stus={'xiaohong':'123','xiaohei':'456','xiaobai':'789'} 9 f=open('stus1.json','w',encoding='utf-8') 10 json.dump(stus,f,indent=4,ensure_ascii=False) #自动传入字典,转换成json字符串
2. json反序列化(字符串转成字典)方法:
loads:无文件操作 load: 读文件+反序列化
import json #导入模块
1 # 读取文件 2 # load(操作文件方便) 3 with open('stus.json',encoding='utf-8') as f: 4 user_dic=json.load(f) #读取的是文件对象,转换成字典 5 print(user_dic) 6 7 # loads(只要不是操作文件都用它) 8 f = open('stus.json',encoding='utf-8').read() #.read()读取的是字符串,转换成字典 9 user_dic=json.loads(f) 10 print(user_dic)