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

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

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对象的集合即可

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

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

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

作者:first_semon
         
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
原文地址:https://www.cnblogs.com/first-semon/p/8653242.html