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对象的集合即可
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的时候报错
python中class的序列化和反序列化的更多相关文章
- Python 中数据的序列化和反序列化(json处理)
概念: JSON(JavaScript Object Notation):是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming ...
- Asp.net中Json的序列化和反序列化(一)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...
- ASP.NET 中JSON 的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- Asp.Net中JSON的序列化和反序列化-----JavaScriptSerializer ,加上自己工作心得
在工作中和手机通信用到web服务和javascriptSerializer,返回json数据,供手机端调用,一开始返回的数据是一大堆,比如 [{"word_picture9":&q ...
- ASP.NET中JSON的序列化和反序列化(转)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- [转]ASP.NET中JSON的序列化和反序列化
本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码 ...
- 【SpringBoot】 中时间类型 序列化、反序列化、格式处理
[SpringBoot] 中时间类型 序列化.反序列化.格式处理 Date yml全局配置 spring: jackson: time-zone: GMT+8 date-format: yyyy-MM ...
- 【Python】python学习文件的序列化和反序列化
json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有 ...
随机推荐
- weinre 远程调试 安装 配置
1.第一种方法:安装:npm install -g weinre 2.第一种方法:开启本地监听服务器(修改端口,默认端口是8080):在cmd中运行: weinre --httpPort 8101 - ...
- webdriver +浏览器驱动
webdriver 经常使用的驱动有ChromeDriver , Firefox 驱动和IE驱动. 在使用的时候需要将对应的驱动下载到本地放到Python的安装路径下,然后添加路径到系统环境变量. 有 ...
- nginx传世经典
nginx的简单介绍与安装nginx的简单介绍 一.Nginx的产生 Nginx是一款高性能的 HTTP 和反向代理服务器,由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)为俄罗斯网站Ramble ...
- 2017年4月7日16:18:17 java8 常用记录
List<String> customerUids = customerTagModel.stream().map(CustomerTagModel::getCustomerUid) ...
- Java学习笔记40(sql:将数据库内数据存入对象中)
新建一个数据表: use qy97; create table student( id int primary key auto_increment, sname ), gander ), age i ...
- Page 对象详解
Page 对象 由于网页编译后所创建的类由Page派生而来,因此网页可以直接使用Page对象的属性.方法和事件. Page对象的常用属性 1.IsPostBack(bool类型) 获取一个值,该值指示 ...
- mysql数据库的基本操作命令整理
快捷键 ctrl+l 清屏 ctrl +a 回到行首 ctrl + e 回到行末 数据库操作 进入数据库 方式1 mysql -u用户名 -p 密码 --------直接输入密码,缺点,会暴露自己 ...
- Arcmap连接数据库需管理员获取许可——创建ArcSDE连接文件
一.在装有server的服务器上创建ArcSDE连接文件 1.打开ArcMap<<ArcToolBox<<数据管理工具<<工作空间<<创建ArcSDE连 ...
- sql server中case when的用法
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- Deploy Descriptor
之前我们在编写HelloWorld项目时,在WEB-INF目录下创建了一个web.xml文件.这个文件叫做部署描述文件,每个Servlet应用程序的部署描述文件的名称都是web.xml.Web容器在启 ...