您的位置:首页 > 编程语言 > Python开发

python序列化模块json和pickle

2019-03-26 22:46 721 查看
版权声明: https://blog.csdn.net/qq_39806105/article/details/93010083

序列化相关

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

1.json

  • 应用场景:
    json模块主要用于处理json格式的数据,可以将python的字典或列表等对象转化为json(序列化)格式的数据,同时也可以将json格式的数据转化为python的字典(反序列化),便于python处理,便于跨平台或跨语言进行数据交互
  • 功能: Json模块提供了四个功能:dumps、dump、loads、load
  • 具体应用:
      dumps:将python 基本数据类型转化为json格式数据类型
    • loads:将json格式数据类型转化为python数据类型
    [code]# 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 用于对文件进行序列化和反序列化
    [code]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模块。

    参考文章:

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: