Python序列化 json模块和pickle模块

1、json模块

1)JSON是一种轻量级的数据交换格式,易于人阅读和编写,适用于多种编程语言,可以与其他编程语言做数据交换,同时也易于机器解析和生成,但是支持的数据类型少。

 【例1-1】json序列化

序列化在计算机科学中通常有以下定义:
    1)对同步控制而言,表示强制在同一时间内进行单一访问。
    2)在数据储存与发送的部分是指将一个对象存储至一个存储介质,例如文件或是记亿体缓冲等,或者透过网络发送数据时进行编码的过程,可以是字节或是XML等格式。而字节的或XML编码格式可以还原完全相等的对象。 这程序被应用在不同应用程序之间发送对象,以及服务器将对象存储到文件或数据库。相反的过程又称为反序列化。(维基百科

import json
city={
    "湖南":"长沙",
    "湖北":"武汉",
    "山东":"济南",
    "江苏":"南京",
    "陕西":"西安",
}

# dump 至少需要传两个参数,ensure_ascii参数设置是否使用ascii,
# 这里设置False,方便存入文件后,中文的可读性
with open("city_dump.json","w",encoding="utf-8") as f:
    json.dump(city,f,ensure_ascii=False)

# dumps作用同dump,但是只需要传一个参数
with open("city_dumps.json","w",encoding="utf-8") as f:
    f.write(json.dumps(city,ensure_ascii=False))

# load 直接可以直接将文件句柄作为参数
with open("city_dump.json", "r", encoding="utf-8") as f:
    print(json.load(f))

# loads 需要先读取文件
with open("city_dumps.json", "r", encoding="utf-8") as f:
    f_read=f.read()
    print(json.loads(f_read))

   返回结果 >>>

{'湖南': '长沙', '湖北': '武汉', '山东': '济南', '江苏': '南京', '陕西': '西安'}
{'湖南': '长沙', '湖北': '武汉', '山东': '济南', '江苏': '南京', '陕西': '西安'}

【例1-2】json的一些限制 

# json编码的格式对于Python 语法的差异
import json
# 字典中任何非字符串类型的key,在编码时会先转换为字符串
# value中:None ==> null True ==>true False ==> false 单引号 ==> 双引号
dict_num={1:2,True:3,"3":None,"4":True}
print(json.dumps(dict_num))
# 元组会转化为列表
dict_city=("湖南","山东")
print(json.dumps(dict_city,ensure_ascii=False))
# 字典序列化时,存在元组key值会报错
dict_num={(1,2,3):4}
print(dict_num)
# print(json.dumps(dict_num))  # 此处报错

  返回结果 >>>

{"1": 3, "3": null, "4": true}
["湖南", "山东"]
{(1, 2, 3): 4}

 未完。。。

猜你喜欢

转载自blog.csdn.net/weixin_41859405/article/details/82749213