python序列化模块json和pickle

序列化相关

如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON

1.json

  • 应用场景:
    json模块主要用于处理json格式的数据,可以将python的字典或列表等对象转化为json(序列化)格式的数据,同时也可以将json格式的数据转化为python的字典(反序列化),便于python处理,便于跨平台或跨语言进行数据交互
  • 功能:
    • Json模块提供了四个功能:dumps、dump、loads、load
  • 具体应用:
    • dumps:将python 基本数据类型转化为json格式数据类型
    • loads:将json格式数据类型转化为python数据类型
# author:PicaHealth
# contact: 172212595@qq.com
# datetime:2019/3/26 21:47
# software: PyCharm

"""
文件说明:json_test 序列化、反序列化

"""

import json

s1 = {'key1': 'value1'} # 这是一个字典
print(type(s1))
# 输出结果: <class 'dict'>

# Python对象序列化为json
json_str = json.dumps(s1) 
print("json_str类型:%s"%type(json_str))
print("json_str内容:%s"%json_str)
# 输出结果:
# json1_str类型:<class 'str'>      #经dumps方法处理之后返回的是一个str,内容就是标准的JSON
# json1_str内容:{"key1": "value1"}

# 把JSON反序列化为Python对象
json_obj=json.loads(json_str) 
print("json_obj类型:%s"%type(json_obj))
print("json_obj内容:%s"%json_obj)
# 输出结果:
# json_obj类型:<class 'dict'>     #经loads处理之后,str变味dict
# json_obj内容:{'key1': 'value1'}


  • dump 和load 用于对文件进行序列化和反序列化
import json

s1 = {"key1": "value1"} # 这是一个字典
print(type(s1))
# 输出结果: <class 'dict'>
json.dump(s1,open('序列化.txt','w'))  #将s1序列化为json,并写入文件
e1 = json.load(open('序列化.txt','r'))  #读取json文件,并反序列化为Python字典
print("e1的类型:",type(e1))
print('e1的内容:',e1)
# 输出结果:
# e1的类型: <class 'dict'>
# e1的内容: {'key2': 'value2'}

2.pickle

  • 应用场景:
    pickle模块也有基本的数据序列和反序列化,和json的功能类似。和json不同的是:json 更适合跨语言 可以处理字符串,基本数据类型;pickle属于python专有,更适合处理复杂类型的序列化
    • 由于pickle属于Python特有,而且方法与json模块基本一致,这里就不做概述,详情可以参考结尾的文章

小结:
Python语言特定的序列化模块是pickle,但如果要把序列化搞得更通用、更符合Web标准,就可以使用json模块。

参考文章:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值