zoukankan      html  css  js  c++  java
  • 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
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题,欢迎交流
  • 相关阅读:
    Netty相关知识积累
    Java内存管理
    使用nginx-upload-module搭建文件上传服务器
    mysql 5.7自动安装脚本
    CDH5集群搭建
    Linux常用命令
    编译原理要点四
    编译原理要点三
    编译原理要点二:
    编译原理要点
  • 原文地址:https://www.cnblogs.com/first-semon/p/8653242.html
Copyright © 2011-2022 走看看