序列化的 json模块
import json #在内存中 数字、字符串、列表、字典、元组 类型数据 ----- 序列化后的字符串 dic = dict([('A', '65'), ('B', '66'), ('C', '67')]) dic_str = json.dumps(dic) # dumps() 序列化为字符串 print("str类型 ", dic_str) str2 = '{"k1": "v1", "k2": "v2"}' dic2 = json.loads(str2) # loads() 将字符串反序列化为原本类型的数据(元组类型 无法还原 是列表) print("dict类型 ", dic2)
import json dic = {"a": "AAA", "w": "WWW"} # 将内存中的数字、字符串、列表、字典、元组类型 序列化为字符后 写入文件 f = open("AA.txt", mode='w', encoding="utf-8") json.dump(dic, f) # 生成了对应文件 打开文件可以看到字符串"{"a": "AAA", "w": "WWW"}" f.close()
import json
dic = {"country": "China", "国家": "中国"} # 内存中的字符串、列表、字典、元组类型 序列化为字符后 写入文件 f = open("AA.txt", mode='w', encoding="utf-8") # 默认参数ensure_ascii=True json.dump(dic, f) # 生成了对应文件 打开文件可以看到字符串"{"country": "China", "\u56fd\u5bb6": "\u4e2d\u56fd"}" f.close() dic = {"country": "China", "国家": "中国"} # 内存中的字符串、列表、字典、元组类型 序列化为字符后 写入文件 f = open("AA.txt", mode='w', encoding="utf-8") json.dump(dic, f, ensure_ascii=False) # 生成了对应文件 打开文件可以看到字符串"{"country": "China", "国家": "中国"}" f.close()
json 的dump 不支持分步序列化到文件中,只能借助 dumps +文件的逐行写 针对多行内容 json的load 也不可用,只能文件逐行读出+ loads
( pickle 可以dump 直接分步序列化到文件中 再对应分步从文件中load反序列化)
import json dic1 = {"a": "AAA", "w": "WWW"} dic2 = {"country": "China", "国家": "中国"} dic_list = [dic1, dic2] f = open("AA.txt", mode='w', encoding="utf-8") for dic in dic_list: s = json.dumps(dic) f.write(s+'\n') f.close() lst = [] f = open("AA.txt", mode='r', encoding="utf-8") for line in f: dic = json.loads(line.strip()) lst.append(dic) f.close() print(lst)