json一次写入和读取多条数据
json数据:一种轻量级的标准数据的交换格式,各种语言数据传输的一种格式
dumps和dump都是将python的数据类型序列化成json对象
import json dic = {'name': 'rock', 'li': [1, 2, 3, 4]} json_obj = json.dumps(dic) print(json_obj, type(json_obj))
loads和load 是将json对象 反序列化 成python语言或者其他语言的数据类型
s = '{"name": "rock", "li": [1, 2, 3, 4]}' # json数据的字符串一定要用双引号 di = json.loads(s) print(di, type(di))
json一次写入多条数据
import json dic = {'name': 'rock', 'hobby_list': ['跑步', '打球']} f1 = open('json_learn', 'a', encoding='utf-8') d = json.dumps(dic) # f1.write(d) # 一定要换行 f1.write(d + '\n') # 一定要换行 f1.close() f2 = open('json_learn', 'r', encoding='utf-8') for con in f2: data = json.loads(con) print(data) f2.close()
json中的字典的键必须是字符串
# 坑 json中的键必须是字符串 dic1 = {1: 'rock', 2: 33} dic3 = {55: 'rock', 8: 33} d = json.dumps(dic1) print(d) print(json.loads(d))
json显示中文
# ensure_ascii=False 显示中文
# sort_keys 按键排序
# separators=('|',',') 设置分隔符 s = json.dumps(dic1, ensure_ascii=False, sort_keys=True,separators=('|', ',')) print(s) s1 = json.dumps(dic1) print(s1)
dump和load写入读取文件,只能写入读取一条数据,多条报错
import json dic1 = {'name': 'rock'} dic2 = {'name': 'chen'} dic3 = {'name': 'zi'} with open('多个字典.json', encoding='utf-8', mode='w') as f1: json.dump(dic1, f1) f1.write('\n') json.dump(dic2, f1) f1.write('\n') json.dump(dic3, f1) f1.write('\n') with open('多个字典.json', encoding='utf-8',) as f1: ret1 = json.load(f1) ret2 = json.load(f1) ret3 = json.load(f1)