zoukankan      html  css  js  c++  java
  • 05.json与pickle

    01.json

    1.序列化 (json.dumps) :是将内存中的对象存储到硬盘,变成字符串
    
    2.反序列化(json.loads) : 将刚刚保存在硬盘中的内存对象从新加载到内存中
    
    json.dumps( data,ensure_ascii=False, indent=4)
    #json序列化代码
    import json
    info = {
        'name':"tom",
        "age" :"100"
    }
    f = open("test.txt",'w')
    # print(json.dumps(info))
    f.write(json.dumps(info))
    f.close()
    #json反序列化代码
    import json
    f = open("test.txt","r")
    data = json.loads(f.read())
    f.close()
    print(data["age"])

    02.pickle序列化

    1、python的pickle模块实现了python的所有数据序列和反序列化。
    
    2、基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load
    
    3、与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

    pickle序列化代码

    #pickle序列化代码
    import pickle
    info = {
        'name':"tom",
        "age" :"100"
    }
    f = open("test.txt",'wb')
    f.write(pickle.dumps(info))
    f.close()

    pickle反序列化代码

    #pickle反序列化代码
    import pickle
    f = open("test.txt","rb")
    data = pickle.loads(f.read())
    f.close()
    print(data["age"])

    03.解决序列化datetime类型

    import json,datetime
    
    class JsonCustomEncoder(json.JSONEncoder):
        def default(self, field):
            if isinstance(field, datetime.datetime):
                return field.strftime('%Y-%m-%d %H:%M:%S')
            elif isinstance(field, datetime.date):
                return field.strftime('%Y-%m-%d')
            else:
                return json.JSONEncoder.default(self, field)
    
    t = datetime.datetime.now()
    
    print(type(t),t)
    f = open('ttt','w')                              #指定将内容写入到ttt文件中
    f.write(json.dumps(t,cls=JsonCustomEncoder))      #使用时候只要在json.dumps增加个cls参数即可

    JSON和pickle模块的区别

    1.JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。
    2.JSON用于各种语言之间的字符转换。
    pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异
    • pickle反序列化代码
  • 相关阅读:
    python_16(bootstrap)
    python_15(jquery)
    python_14(js)
    .net 定义泛型方法解析XML数据赋值给相应对象
    SQL Server 数字字符串位数不够补0
    SQL Server 跨服务器查询
    JQ1.5 为动态追加的元素添加事件
    radio group 的change 事件
    记录兼职工作中遇到的问题-IIS 服务器站点无法启动
    记录第一份工作的最后一次需求-百分比环形进度条
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14588069.html
Copyright © 2011-2022 走看看