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的时候报错

转载于:https://www.cnblogs.com/first-semon/p/8653242.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值