序列化和反序列化

Posted rivendare

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化和反序列化相关的知识,希望对你有一定的参考价值。

序列化

  • 将内存中对象存储下来,把他变成一个个字节

反序列化

  • 将文件的一个个字节恢复成内存对象

 

pickle库

  • dumps 对象序列化为bytes对象
  • dump 对象序列化到文件对象,存入文件
  • loads 从bytes对象反序列化
  • load 对象反序列化,从文件读取数据

示例:

import pickle

filename = test.txt

d = {a:1,b:qwe,c:[1,2,3]}
l = list(123)
i = 99

with open(filename,wb) as f: #序列化
    pickle.dump(d,f)
    pickle.dump(l,f)
    pickle.dump(i,f)

with open(filename,rb) as f: #反序列化
    print(f.read(),f.seek(0))
    for _ in range(3):
        x = pickle.load(f)
        print(type(x),x)

输出为:

bx80x03}qx00(Xx01x00x00x00aqx01Kx01Xx01x00x00x00bqx02Xx03x00x00x00qweqx03Xx01x00x00x00cqx04]qx05(Kx01Kx02Kx03eu.x80x03]qx00(Xx01x00x00x001qx01Xx01x00x00x002qx02Xx01x00x00x003qx03e.x80x03Kc. 0
<class dict> {a: 1, b: qwe, c: [1, 2, 3]}
<class list> [1, 2, 3]
<class int> 99

 

示例:

import pickle

class AA:
    tttt = abc
    def show(self):
        print(def)

a1 = AA()

sr = pickle.dumps(a1)
print(sr={}.format(sr)) #AA

a2 = pickle.loads(sr)
print(a2.tttt)
a2.show()

输出为:

sr=bx80x03c__main__
AA
qx00)x81qx01.
abc
def

以上只序列化了一个AA类名,反序列化的时候找到类就可以恢复一个对象

 

序列化应用

本地序列化的情况应用较少,大多场景应用在网络传输中

将数据序列化后通过网络传输到远程节点,远程服务器上的服务奖接收到的数据反序列化后就可以使用

需要注意,远程接收端,反序列化时必须有对应的数据类型,否则会报错,尤其是自定义类,必须远程有一致定义

现在大多数项目需要通过网络将数据传送到其他节点,这就需要大量的序列化,反序列化过程

python程序之间可以使用pickle解决序列化,反序列化,如果跨平台,跨语言,跨协议pickle就不适用了

不同的协议,效率不同,适用场景不同,要根据不同情况分析选择

 

json

json是一个轻量级的数据交换格式,他基于ecmascript的一个子集,采用完全独立于变成语言的文本格式来存储和表示数据

 

示例:

{
    "person":[
        {
            "name":"tom",
            "aeg":18
        },
        {
            "name": "jerry",
            "aeg": 18
        }
    ],
    "total": 2
}

 

json模块

python与json

技术分享图片

 

 常用方法

 

 技术分享图片

 

 示例:

import json

d = {name:tom,age:20,interest:[music,movie]}
j = json.dumps(d)

print(j,type(j))

d1 = json.loads(j)
print(d1)

 

以上是关于序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

python代码实现二叉树的序列化和反序列化

序列化和反序列化的示例代码

Django REST framework序列化

rest_framework

csharp 此代码演示了json序列化和反序列化的4种方法

Django REST framework 基本组件