json模块 ---- dumps、loads、dump、load
序列化:json.dumps 将python对象编码成json字符串
反序列化:json.loads 将已编码的json字符串解码成python对象
json.dump() 直接把python数据类型转化为json字符串 写入json文件
json.load() 直接把json文件读出来,转化为python数据类型
json.dump = json.dumps() + f.write()
json.load = f.read() + json.loads()
为甚么直接load 空json文件会报错? json.load = f.read() + json.loads() 相当于json.loads('')
1.json.dumps() 将python对象编码成json字符串
list1 = ['张全蛋', '李小花'] json_str = json.dumps(list1, ensure_ascii=False) print(json_str) print(type(json_str))
>>> ["张全蛋", "李小花"]
>>> <class 'str'>
2. json.loads() 将已编码的json字符串解码成python对象
python_data = json.loads(json_str) print(python_data) print(type(python_data)) # list >>> ['张全蛋', '李小花'] >>> <class 'list'>
3. json.dump() json.load() 原理
json.dump = json.dumps() + f.write() 先将python数据类型转为json格式字符串,然后将json字符串写入json文件
# json.dumps()
dic = {'name': 'tank','age': 17} # 将ensure_ascii默认的ascii取消设置为False,可以在控制台看到中文,否则看到的是bytes类型数据 json_str = json.dumps(dic, ensure_ascii=False) #注意: 保存json数据时,用.json作为文件的后缀名 with open('user.json', 'w', encoding='utf-8') as f: f.write(json_str)
json.load = f.read() + json.loads() 先将json格式字符串读出来,然后将json格式字符串转化为python数据类型
# json.dumps() dic = {'name': 'tank','age': 17} #类型数据 with open('user.json', 'r', encoding='utf-8') as f: json_str=f.read() str = json.loads(s)
json.dump() json.load()
# user_dic = { # 'username': 'tank', # 'password': 123 # } # f = open('user2.json', 'w', encoding='utf-8') # json.dump(user_dic, f,ensure_ascii=False) # f.close() # # with open('user3.json', 'w', encoding='utf-8') as f: # json.dump(user_dic, f) # with open('user3.json', 'r', encoding='utf-8') as f: # user_dic = json.load(f) # print(user_dic) # print(type(user_dic))