序列化的 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)

 

posted @ 2020-05-08 13:45  CherryYang  阅读(122)  评论(0编辑  收藏  举报