zoukankan      html  css  js  c++  java
  • 序列化与反序列化

    1.什么是序列化与反序列化

    序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输
    发序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构

    2.为什么要有序列化与反序列化

    1、可以保存程序的运行状态
    2、数据的跨平台交互

    3.如何使用

    import json
    
    dic={'name':'egon','age':18,'sex':'male'}
    #序列化:内存中的数据类型------>中间格式json
    
    # # 1、序列化得到json_str
    # json_str=json.dumps(dic)
    # # 2、把json_str写入文件
    # with open('db.json','wt',encoding='utf-8') as f:
    #     f.write(json_str)
    
    #1和2合为一步
    with open('db.json','wt',encoding='utf-8') as f:
        json.dump(dic,f)
    
    
    # print(json_str,type(json_str)) # json格式不能识别单引号,全都是双引号
    import json
    
    #反序列化:中间格式json-----》内存中的数据类型
    
    # #1、从文件中读取json_str
    # with open('db.json','rt',encoding='utf-8') as f:
    #     json_str=f.read()
    # #2、将json_str转成内存中的数据类型
    # dic=json.loads(json_str)
    
    #1和2可以合作一步
    with open('db.json','rt',encoding='utf-8') as f:
        dic=json.load(f)
    
    print(dic['sex'])
    import pickle
    
    dic={'a':1,'b':2,'c':3}
    
    # #1 序列化
    # pkl=pickle.dumps(dic)
    # # print(pkl,type(pkl))
    #
    # #2 写入文件
    # with open('db.pkl','wb') as f:
    #     f.write(pkl)
    
    #1和2可以合作一步
    # with open('db.pkl','wb') as f:
    #     pickle.dump(dic,f)
    import pickle
    
    
    # # #1、从文件中读取pickle格式
    # with open('db.pkl','rb') as f:
    #     pkl=f.read()
    # #2、将json_str转成内存中的数据类型
    # dic=pickle.loads(pkl)
    # print(dic['a'])
    
    #1和2可以合作一步
    # with open('db.pkl','rb') as f:
    #     dic=pickle.load(f)
    #
    # print(dic['a'])
    
    
    import json,pickle
    
    s={1,2,3}
    # json.dumps(s)
    pickle.dumps(s)

    json
    优点:
      跨平台性强
    缺点:
      只能支持/对应python部分的数据类型

    pickle
    优点:
      可以支持/对应所有python的数据类型
    缺点:
      只能被python识别,不能跨平台

  • 相关阅读:
    如何在Oracle中复制表结构和表数据
    linux --备份oracle
    Jira-Clone与发邮件的使用
    C# lock关键词/lock语句块、线程锁
    HTML5实现简单圆周运动示例
    C#使用FFmpeg 将视频格式转换成Gif图片示例
    C#使用FFmpeg 将视频格式转换成MP4示例
    ffmpeg ffplay ffprobe资料整理
    Asp.Net MVC是否针对每次请求都重新创建一个控制器实例
    Asp.Net MVC--Controller激活2
  • 原文地址:https://www.cnblogs.com/chillwave/p/9205792.html
Copyright © 2011-2022 走看看