python中class的序列化和反序列化

时间:2021-05-08 12:40:41

对于类的序列化:将类的成员变量名和数据作为一对键值对存储在物理内存中,例如

class A(object):
def __init__(self):
self.a = o
self.b = 1
self.c = 1
self.d = 10
self.e = 10

写入到物理内存上的形式如下{A:[{a:0},{b:1},{c:1},{d:10},{e:10}]}

反序列化就是将上述过程用程序解析成代码

class A(object):
def __init__(self):
self.a= []
self.b= 1
self.c= 1
self.d= 10
self.e= 10
    def FUN(self,dictPropertyAdd):
self.a= dictPropertyAdd.get(a,10)
self.b= dictPropertyAdd.get(b,10)
self.c= dictPropertyAdd.get(c,1)
self.d= dictPropertyAdd.get(d,1)
self.e= dictPropertyAdd.get(e,0)

根据上述例子可以将文件中的数据转换成类对象A的成员变量数据

如果类B中含有A的对象,也就是B中包含A的数据,像这样:

                   "f":2001001,
"g":[
{
"exp_add":1000,
"level":[1,300],
"radius_add":0,
"rebound":1,
"speed_add":1
}

那么反序列化的时候只需要在B中加入A对象的集合即可

 class B(object):
def __init__(self):
self.f= 0
self.g= []
     def parseProperty(self,dictData):
self.f= dictData.get(u'f')
l_g = dictData.get(u'g')
for i in range(len(l_g)):
son_obj = A()
son_obj.parseCannonPropertyAdd(l_g[i])
self.g.append(son_obj)

在json反序列化的过程中肯能会遇到字符错误,那就要检查序列化后的文件根式编码是否出现了问题。

楼楼在反初始化的时候,编码是正确的,但是因为列表中最后一个元素后面多了一个逗号,导致错误,还有一个就是逗号写成了中文逗号,导致json在load的时候报错

相关文章