CN106648569B - 目标序列化实现方法和装置 - Google Patents
目标序列化实现方法和装置 Download PDFInfo
- Publication number
- CN106648569B CN106648569B CN201510735570.XA CN201510735570A CN106648569B CN 106648569 B CN106648569 B CN 106648569B CN 201510735570 A CN201510735570 A CN 201510735570A CN 106648569 B CN106648569 B CN 106648569B
- Authority
- CN
- China
- Prior art keywords
- target
- database
- class
- serialization
- serialized
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种目标序列化实现方法和装置。所述方法包括以下步骤:自动获取目标中待序列化的部分;对所述目标中待序列化的部分进行解析得到解析结果,并保存所述解析结果;根据所述解析结果对所述目标进行序列化,转换为打包序列化包装器;调用所述打包序列化包装器,通过反射机制对所述目标进行序列化读写。上述目标序列化实现方法和装置,通过将自动获取目标中待序列化的部分,进行解析得到解析结果,根据解析结果对目标进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且减小了工程代码量及函数量,缩减了空间。
Description
技术领域
本发明涉及计算机应用领域,特别是涉及一种目标序列化实现方法和装置。
背景技术
对象序列化技术是将对象数据转换为另一种持久化数据形式的技术,转换之后的数据形式必须易于存储在外部介质上,或易于使用网络进行传输。为了使得存储和传输后的数据能够再次变回内存中的对象,这样的转换必须是可逆的。目标序列化技术在数据的传输和存储过程中,引入了对象的抽象,使得这个过程更加直观,使用更加方便,因此,目标序列化技术在面向对象的软件***中使用非常广泛。
由于目标序列化技术使用的广泛性,很多计算语言都在语言层面,通过标准库的方式,提供目标序列化的功能支持,如java语言等。在Android***中,目标序列化代码读写都是手工完成的,例如每新增一个对象,在数据库中通过需要手动写一遍序列化代码,然而大量函数和大量代码重复,通过手工复制粘贴,其开发效率低,且手工复制粘贴,容易引入缺陷。
发明内容
基于此,有必要针对传统的目标序列化过程中手工复制粘贴代码,导致开发效率低且容易引入缺陷的问题,提供一种目标序列化实现方法,能够提高开发效率且避免引入缺陷。
此外,提供一种目标序列化实现装置,能够提高开发效率且避免引入缺陷。
一种目标序列化实现方法,包括以下步骤:
自动获取目标中待序列化的部分;
对所述目标中待序列化的部分进行解析得到解析结果,并保存所述解析结果;
根据所述解析结果对所述目标进行序列化,转换为打包序列化包装器;
调用所述打包序列化包装器,通过反射机制对所述目标进行序列化读写。
一种目标序列化实现装置,包括:
获取模块,用于自动获取目标中待序列化的部分;
解析模块,用于对所述目标中待序列化的部分进行解析得到解析结果,并保存所述解析结果;
转换模块,用于根据所述解析结果对所述目标进行序列化,转换为打包序列化包装器;
调用模块,用于调用所述打包序列化包装器,通过反射机制对所述目标进行序列化读写。
上述目标序列化实现方法和装置,通过将自动获取目标中待序列化的部分,进行解析得到解析结果,根据解析结果对目标进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
附图说明
图1为一个实施例中终端的内部结构示意图;
图2为一个实施例中后台服务器的内部结构示意图;
图3为一个实施例中目标序列化实现方法的流程图;
图4为一个实施例中类序列化实现方法的流程图;
图5为一个实施例中数据库序列化实现方法的流程图;
图6为一个实施例中目标序列化实现装置的结构框图;
图7为另一个实施例中目标序列化实现装置的结构框图;
图8为另一个实施例中目标序列化实现装置的结构框图;
图9为另一个实施例中目标序列化实现装置的结构框图;
图10为另一个实施例中目标序列化实现装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一客户端称为第二客户端,且类似地,可将第二客户端称为第一客户端。第一客户端和第二客户端两者都是客户端,但其不是同一客户端。
图1为一个实施例中终端的内部结构示意图。如图1所示,该终端包括通过***总线连接的处理器、存储介质、内存、网络接口、显示屏、扬声器和输入装置。其中,终端的存储介质存储有操作***,还包括一种目标序列化实现装置,该目标序列化实现装置用于实现一种目标序列化实现方法。该处理器用于提供计算和控制能力,支撑整个终端的运行。终端中的内存为存储介质中的目标序列化实现装置的运行提供环境,网络接口用于与服务器进行网络通信,如发送数据请求至服务器,接收服务器返回的数据等。其中,目标可包括类和/或数据库等。类可为Java类中所有需要序列化的类。终端的显示屏可以是液晶显示屏或者电子墨水显示屏等,输入装置可以是显示屏上覆盖的触摸层,也可以是终端外壳上设置的按键、轨迹球或触控板,也可以是外接的键盘、触控板或鼠标等。该终端可以是手机、平板电脑或者个人数字助理。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的终端的限定,具体的终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图2为一个实施例中后台服务器的内部结构示意图。如图2所示,该后台服务器包括通过***总线连接的处理器、存储介质、内存和网络接口。其中,该服务器的存储介质存储有操作***、数据库和目标序列化实现装置,数据库中存储有目标序列化数据,该目标序列化实现装置用于实现适用于服务器的一种目标序列化实现方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存为存储介质中的目标序列化实现装置的运行提供环境。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的数据请求以及向终端返回数据等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
图3为一个实施例中目标序列化实现方法的流程图。如图3所示,一种目标序列化实现方法,包括以下步骤:
步骤302,自动获取目标中待序列化的部分。
具体地,获取目标中待序列化的部分可通过字符串匹配方式获取或添加注解标记,查询到注解标记获取,但不限于此。
在一个实施例中,步骤302包括:从目标中查找与预定字符串相匹配的成员,将相匹配的成员作为待序列化的部分。
具体地,预定字符串可根据需要设定,如%#,&%,*&等,不限于此。
若目标包括类,则从类中查找与第一预定字符串相匹配的成员,将相匹配的成员作为类中待序列化的部分。
其中,第一预定字符串可根据需要设定,如%#,&%,*&等,不限于此。
若目标包括数据库,则从数据库中查找与第二预定字符串相匹配的成员,将相匹配的成员作为类中待序列化的部分。
其中,第二预定字符串可根据需要设定,如%#,&%,*&等,不限于此。且第一预定字符串与第二预定字符串不同。通过字符串匹配可快速查找到需要序列化的部分,不需要额外增加标记。
步骤304,对目标中待序列化的部分进行解析得到解析结果,并保存该解析结果。
具体地,目标可包括类和数据库等中一种或两种。若目标包括类,则解析结果中包括类信息,主要是类成员的类型信息等。若目标包括数据库,则解析结果中包括数据库中数据表信息等。将解析结果保存在内存缓存中,供后续调用使用。
步骤306,根据该解析结果对该目标进行序列化,转换为打包序列化包装器。
具体地,将目标转换为ParcelWrapper类,即打包序列化包装器,对自动序列化的部分的包装。转换支持的基本类型包括String(字符串类型)、SmartParcel(自动序列化类型)、Parcelable类(Android***类型)、ArrayList(数组列表类型)、Map(数据结构)等。
步骤308,调用该打包序列化包装器,通过反射机制对该目标进行序列化读写。
具体地,调用ParcelWrapper,根据解析结果通过反射机制对目标进行序列化读写。反射机制是Java***提供的能力。反射机制是指Java在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。
Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
上述目标序列化实现方法,通过将自动获取目标中待序列化的部分,进行解析得到解析结果,根据解析结果对目标进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
在一个实施例中,上述目标序列化实现方法还包括:对该目标中待序列化的成员添加注解标记。注解标记可为预先定义的标记,用于表示目标中需要序列化的成员。目标有多个时,每个目标所采用的注解标记不同,每个目标与其注解标记对应。
该自动获取目标中待序列化的部分包括:获取该目标中记录有注解标记的部分作为该目标中待序列化的部分。通过添加注解标记,方便快速查找到对应的待序列化的部分,且不需重复编写代码和函数,减小了数据量。
图4为一个实施例中类序列化实现方法的流程图。如图4所示,目标为类,一种类序列化实现方法,包括以下步骤:
步骤402,对类中待序列化的成员添加第一注解标记。
具体地,第一注解标记根据需要设定,如@NeedParcel或@n或#m等,不限于此。
例如,类中添加注解标记后的代码如下所示:
上述在类的成员中添加第一注解标记@NeedParcel,表明需要序列化。
步骤404,获取该类中记录有第一注解标记的部分作为类中待序列化的部分。
具体地,识别出具有第一注解标记的部分作为类中待序列化的部分。
步骤406,对类中待序列化的部分进行解析得到解析结果,并保存该解析结果。
具体地,解析结果中包括类信息,主要是类成员的类型信息等。
步骤408,根据该解析结果对类进行序列化,转换为打包序列化包装器。
具体地,将类转换为ParcelWrapper类,即打包序列化包装器,对自动序列化的部分的包装。转换支持的基本类型包括String(字符串类型)、SmartParcel(自动序列化类型)、Parcelable类(Android***类型)、ArrayList(数组列表类型)、Map(数据结构)等。
SmartParcelable接口为被序列化类的接口,不需要实现任何函数,通过SmartParcelable接口可以获取类中实现序列化的成员。
步骤410,调用该打包序列化包装器,通过反射机制对该类进行序列化读写。
具体地,调用ParcelWrapper,根据解析结果通过反射机制对目标进行序列化读写。
上述类序列化实现方法,通过将类中待序列化的成员添加第一注解标记,根据第一注解标记获取到类中待序列化的部分,进行解析得到解析结果,根据解析结果对类进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
图5为一个实施例中数据库序列化实现方法的流程图。如图5所示,目标为数据库,一种数据库序列化实现方法,包括以下步骤:
步骤502,对数据库中待序列化的成员添加第二注解标记。
具体地,第二注解标记根据需要设定,如@DbValue或@t或#p等,不限于此。目标有多个时,每个目标所采用的注解标记不同。
例如,在原有的DbcacheData接口,需要手动实现以下四个函数:
*Interface that must be implemented and provided as a public CREATOR
*field that provides some static access of your cache data.
@Public
public static interface DbCreator<T extends DbCacheable>{
@public
public Structure[]structure();
@public
public String[]sortorder();
@public
public T createFromCursor(Cursor cursor);
@public
public int version();
}
添加第二注解标注@DbValue后代码如下:
Class that help Auto write or read the Dbdata;
Version control of this data,define a static int field named VERSION_INT,like;
Private static final int VERSION_INT=8;//数据库版本号
Sort order of this data,define a static String filed named ORDER_STR,like;
Simple example:
Public class AppInfo extends AutoDbData{
Private static final int VERSION_INT=8;//数据库版本号
//@DbValue(true)means this Colum should be UNIQUE
//default is false;
@DbValue(true)
public int appid;
@DbValue(true)
public String appname;
@DbValue(true)
public String iconUrl;
@DbValue(true)
public String downloadUrl;
@DbValue(true)
public String summary;
@DbValue(true)
public int isRecommend;
@DbValue(true)
public String packageName;
@DbValue(true)
public String h5_url;//触屏应用地址
@DbValue(true)
public String recommendComment;//推荐详情
@DbValue(true)
public int maskAppType;
//本地
Public int appType=AppType.OTHER_APPLICATION;
Public long installTime=0;
Public int cancelable=0;
Public AppInfo(){
}
此外,还可对注解标记设置为true,表示在数据表中唯一。
步骤504,获取该数据库中记录有第二注解标记的部分作为类中待序列化的部分。
具体地,识别出具有第二注解标记的部分作为类中待序列化的部分。
步骤506,对数据库中待序列化的部分进行解析得到解析结果,并保存该解析结果。
具体地,解析结果中包括数据库中数据表信息等。
步骤508,根据该解析结果对数据库进行序列化,转换为打包序列化包装器。
具体地,将数据库转换为ParcelWrapper类,即打包序列化包装器,对自动序列化的部分的包装。转换支持的基本类型包括String(字符串类型)、SmartParcel(自动序列化类型)、Parcelable类(Android***类型)、ArrayList(数组列表类型)、Map(数据结构)等。
SmartParcelable接口为被序列化类的接口,不需要实现任何函数,通过SmartParcelable接口可以获取类中实现序列化的成员。
步骤510,调用该打包序列化包装器,通过反射机制对该数据库进行序列化读写。
具体地,调用ParcelWrapper,根据解析结果通过反射机制对数据库进行序列化读写。
上述数据库序列化实现方法,通过将数据库中待序列化的成员添加第二注解标记,根据第二注解标记获取到数据库中待序列化的部分,进行解析得到解析结果,根据解析结果对数据库进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
在一个实施例中,上述数据库序列化实现方法中,还包括:在数据库中存储有数据表版本号,并设置该数据表版本号的静态值。
具体地,数据表版本号写static final int VERSION_INT=8;设置数据包版本号的静态值,每次版本号更新时,版本号自动增加1。
进一步的,上述数据库序列化实现方法中,还包括:对该数据表进行排序,并设置排序方式的静态值。
具体地,通过写“static final String ORDER_STR=Columns.FEED_PRIORITY+"DESC,"+Columns.PUBLISH_DATE+"DESC";”的静态值,设置排序方式,按照排序方式进行排序。通过设置静态值,不需要生成函数,可以通过反射读取到信息。数据库中数据表根据需要自动进行排序。
在其他实施例中,上述目标序列化实现方法可同时对类和数据库进行序列化,若采用注解标记,则类中成员所添加的第一注解标记和数据库中成员所添加的第二注解标记不同,以区分。
上述目标序列化实现方法应用于在即时通信应用程序空间中可以减少大约200多个类,减少900多个函数。开发中也无需再手动写序列化类,提高开发效率。运行效率:自动化执行耗时分为两步,类解析(解析出哪些字段需要读写,字段类型等)与数据读写,类解析耗时较多,对解析的结果做缓存,只有第一次用到时解析一遍。一般数据类总的读写耗时2ms左右。此外,对读写密度较大,或者次数较多的类,也支持使用手动写入,提高执行效率。类中的中间对象可使用对象池,减少零碎对象出现。
图6为一个实施例中目标序列化实现装置的结构框图。如图6所示,一种目标序列化实现装置,包括获取模块610、解析模块620、转换模块630和调用模块640。其中:
获取模块610用于自动获取目标中待序列化的部分。
具体地,获取模块610获取目标中待序列化的部分可通过字符串匹配方式获取或添加注解标记,查询到注解标记获取。
在一个实施例中,获取模块610还用于从该目标中查找与预定字符串相匹配的成员,将该相匹配的成员作为待序列化的部分。
具体地,预定字符串可根据需要设定,如%#,&%,*&等,不限于此。
若目标包括类,则获取模块610从类中查找与第一预定字符串相匹配的成员,将相匹配的成员作为类中待序列化的部分。
其中,第一预定字符串可根据需要设定,如%#,&%,*&等,不限于此。
若目标包括数据库,则获取模块610从数据库中查找与第二预定字符串相匹配的成员,将相匹配的成员作为类中待序列化的部分。
其中,第二预定字符串可根据需要设定,如%#,&%,*&等,不限于此。且第一预定字符串与第二预定字符串不同。通过字符串匹配可快速查找到需要序列化的部分,不需要额外增加标记。
解析模块620用于对所述目标中待序列化的部分进行解析得到解析结果,并保存所述解析结果。
具体地,目标可包括类和数据库等中一种或两种。若目标包括类,则解析结果中包括类信息,主要是类成员的类型信息等。若目标包括数据库,则解析结果中包括数据库中数据表信息等。将解析结果保存在内存缓存中,供后续调用使用。
转换模块630用于根据该解析结果对所述类进行序列化,转换为打包序列化包装器。
具体地,将目标转换为ParcelWrapper类,即打包序列化包装器,对自动序列化的部分的包装。转换支持的基本类型包括String(字符串类型)、SmartParcel(自动序列化类型)、Parcelable类(Android***类型)、ArrayList(数组列表类型)、Map(数据结构)等。
调用模块640用于调用所述打包序列化包装器,通过反射机制对所述类进行序列化读写。
具体地,调用ParcelWrapper,根据解析结果通过反射机制对目标进行序列化读写。反射机制是Java***提供的能力。
上述目标序列化实现装置,通过将自动获取目标中待序列化的部分,进行解析得到解析结果,根据解析结果对目标进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
图7为另一个实施例中目标序列化实现装置的结构框图。如图7所示,一种目标序列化实现装置,除了包括获取模块610、解析模块620、转换模块630和调用模块640,还包括标注模块650。其中:
标注模块650用于对该目标中待序列化的成员添加注解标记。
注解标记可为预先定义的标记,用于表示目标中需要序列化的成员。目标有多个时,每个目标所采用的注解标记不同,每个目标与其注解标记对应。
获取模块610还用于获取该目标中记录有注解标记的部分作为该目标中待序列化的部分。通过添加注解标记,方便快速查找到对应的待序列化的部分,且不需重复编写代码和函数,减小了数据量。
图8为另一个实施例中目标序列化实现装置的结构框图。如图8所示,目标包括类,一种目标序列化实现装置,除了包括获取模块610、解析模块620、转换模块630和调用模块640,还包括第一标记模块660。其中:
第一标记模块660用于对该类中待序列化的成员添加第一注解标记。
具体地,第一注解标记根据需要设定,如@NeedParcel或@n或#m等,不限于此。
获取模块610还用于获取该类中记录有第一注解标记的部分作为该类中待序列化的部分。
解析模块620还用于对类中待序列化的部分进行解析得到解析结果,并保存该解析结果。具体地,解析结果中包括类信息,主要是类成员的类型信息等。
转换模块630还用于根据该解析结果对类进行序列化,转换为打包序列化包装器。SmartParcelable接口为被序列化类的接口,不需要实现任何函数,通过SmartParcelable接口可以获取类中实现序列化的成员。
调用模块640还用于调用该打包序列化包装器,通过反射机制对该类进行序列化读写。
具体地,调用ParcelWrapper,根据解析结果通过反射机制对目标进行序列化读写。
上述类序列化实现装置,通过将类中待序列化的成员添加第一注解标记,根据第一注解标记获取到类中待序列化的部分,进行解析得到解析结果,根据解析结果对类进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
图9为另一个实施例中目标序列化实现装置的结构框图。如图9所示,目标包括数据库,一种目标序列化实现装置,除了包括获取模块610、解析模块620、转换模块630和调用模块640,还包括第二标记模块670。其中:
第二标记模块670用于对数据库成员添加第二注解标记。
具体地,第二注解标记根据需要设定,如@DbValue或@t或#p等,不限于此。目标有多个时,每个目标所采用的注解标记不同。
获取模块610还用于获取该数据库中记录有第二注解标记的部分作为数据库中待序列化的部分。
解析模块620还用于对数据库中待序列化的部分进行解析得到解析结果,并保存该解析结果。具体地,解析结果中包括数据库中数据表信息等。
转换模块630还用于根据该解析结果对数据库进行序列化,转换为打包序列化包装器。
调用模块640还用于调用该打包序列化包装器,通过反射机制对该数据库进行序列化读写。
具体地,调用ParcelWrapper,根据解析结果通过反射机制对数据库进行序列化读写。
上述数据库序列化实现装置,通过将数据库中待序列化的成员添加第二注解标记,根据第二注解标记获取到数据库中待序列化的部分,进行解析得到解析结果,根据解析结果对数据库进行序列化,转换为打包序列化包装器,通过调用打包序列化包装器及反射机制进行序列化读写,不需要手动编码,提高了开发效率,且不需手动复制粘贴,避免了引入缺陷,且转换为打包序列化包装器,减小了工程代码量及函数量,缩减了空间。
图10为另一个实施例中目标序列化实现装置的结构框图。如图10所示,目标包括数据库,一种目标序列化实现装置,除了包括获取模块610、解析模块620、转换模块630、调用模块640、第二标记模块670、还包括存储模块680和排序模块690。
存储模块680用于在所述数据库中存储有数据表版本号,并设置该数据表版本号的静态值。
具体地,数据表版本号写static final int VERSION_INT=8;设置数据包版本号的静态值,每次版本号更新时,版本号自动增加1。
排序模块690用于对该数据表进行排序,并设置排序方式的静态值。
通过设置静态值,不需要生成函数,可以通过反射读取到信息。
在其他实施例中,上述目标序列化实现装置,可包括获取模块610、解析模块620、转换模块630、调用模块640、第一标记模块660、第二标记模块670、存储模块680和排序模块690中任意可能的组合,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种目标序列化实现方法,包括以下步骤:
当目标包括类时,对所述类中待序列化的成员添加第一注解标记;当所述目标包括数据库时,对所述数据库的成员添加第二注解标记;所述类中成员所添加的所述第一注解标记和所述数据库中成员所添加的所述第二注解标记不同;
获取所述类中记录有所述第一注解标记的部分作为所述类中待序列化的部分;获取所述数据库中记录有所述第二注解标记的部分作为所述数据库中待序列化的部分;
对所述目标中待序列化的部分进行解析得到解析结果,并保存所述解析结果;若所述目标包括类,则所述解析结果中包括类信息,所述类信息是类成员的类型信息;若所述目标包括数据库,则解析结果中包括所述数据库中数据表信息;
根据所述解析结果对所述目标进行序列化,将所述目标转换为打包序列化包装器;所述打包序列化包装器为ParcelWrapper类;
调用所述打包序列化包装器,根据所述解析结果通过反射机制对所述目标进行序列化读写;
当所述目标包括数据库时,通过反射机制读取到所述数据库中数据表的排序方式的静态值,使得所述数据库中的数据表自动进行排序。
2.根据权利要求1所述的方法,其特征在于,在所述对所述目标中待序列化的部分进行解析得到解析结果之前,所述方法还包括:
从所述目标中查找与预定字符串相匹配的成员,将所述相匹配的成员作为待序列化的部分。
3.根据权利要求1所述的方法,其特征在于,若所述目标包括类,则所述解析结果中包括类信息;若所述目标包括数据库,则所述解析结果中包括所述数据库的数据表信息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述数据库中存储有数据表版本号,并设置所述数据表版本号的静态值;
对所述数据表进行排序,并设置排序方式的静态值。
5.一种目标序列化实现装置,其特征在于,包括:
第一标记模块,用于当目标包括类时,对所述类中待序列化的成员添加第一注解标记;
第二标记模块,用于当所述目标包括数据库时,对所述数据库的成员添加第二注解标记;所述类中成员所添加的所述第一注解标记和所述数据库中成员所添加的所述第二注解标记不同;
获取模块,用于获取所述类中记录有所述第一注解标记的部分作为所述类中待序列化的部分;获取所述数据库中记录有所述第二注解标记的部分作为所述数据库中待序列化的部分;
解析模块,用于对所述目标中待序列化的部分进行解析得到解析结果,并保存所述解析结果;若所述目标包括类,则所述解析结果中包括类信息,所述类信息是类成员的类型信息;若所述目标包括数据库,则解析结果中包括所述数据库中数据表信息;
转换模块,用于根据所述解析结果对所述目标进行序列化,将所述目标转换为打包序列化包装器;所述打包序列化包装器为ParcelWrapper类;
调用模块,用于调用所述打包序列化包装器,根据所述解析结果通过反射机制对所述目标进行序列化读写;当所述目标包括数据库时,通过反射机制读取到所述数据库中数据表的排序方式的静态值,使得所述数据库中的数据表自动进行排序。
6.根据权利要求5所述的装置,其特征在于,所述获取模块还用于从所述目标中查找与预定字符串相匹配的成员,将所述相匹配的成员作为待序列化的部分。
7.根据权利要求5所述的装置,其特征在于,若所述目标包括类,则所述解析结果中包括类信息;若所述目标包括数据库,则所述解析结果中包括所述数据库的数据表信息。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
存储模块,用于在所述数据库中存储有数据表版本号,并设置所述数据表版本号的静态值;
排序模块,用于对所述数据表进行排序,并设置排序方式的静态值。
9.一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至4中任一项所述方法的步骤。
10.一种服务器,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至4中任一项所述方法的步骤。
11.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510735570.XA CN106648569B (zh) | 2015-11-02 | 2015-11-02 | 目标序列化实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510735570.XA CN106648569B (zh) | 2015-11-02 | 2015-11-02 | 目标序列化实现方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106648569A CN106648569A (zh) | 2017-05-10 |
CN106648569B true CN106648569B (zh) | 2021-04-20 |
Family
ID=58809842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510735570.XA Active CN106648569B (zh) | 2015-11-02 | 2015-11-02 | 目标序列化实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106648569B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107450922B (zh) * | 2017-07-27 | 2020-01-03 | 武汉斗鱼网络科技有限公司 | 安卓中弹幕事件自动注册的方法、存储介质、设备及*** |
CN108401008B (zh) * | 2018-01-12 | 2021-05-07 | 深圳壹账通智能科技有限公司 | 设备同步操作的方法及*** |
CN109857742B (zh) * | 2019-01-18 | 2021-03-02 | 烽火通信科技股份有限公司 | 一种大数据虚拟表格快速显示方法及*** |
CN111931200B (zh) * | 2020-07-13 | 2024-02-23 | 车智互联(北京)科技有限公司 | 一种数据序列化方法、移动终端和可读存储介质 |
CN112130837B (zh) * | 2020-09-25 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种代码处理方法、装置及存储介质 |
CN114331416A (zh) * | 2021-12-30 | 2022-04-12 | 深圳市兆珑科技有限公司 | 数据处理的方法、装置、电子设备及存储介质 |
CN116405557A (zh) * | 2023-03-14 | 2023-07-07 | 中科南京移动通信与计算创新研究院 | 基于注解的数据反序列化以及序列化方法 |
CN117372182B (zh) * | 2023-11-21 | 2024-06-18 | 国任财产保险股份有限公司 | 一种基于快速开发持久层代码辅助方法的保险管理*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807168A (zh) * | 2010-03-15 | 2010-08-18 | 北京航空航天大学 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
CN101826112A (zh) * | 2010-05-05 | 2010-09-08 | 山东中创软件工程股份有限公司 | 表单数据存储与读取方法、装置及*** |
CN102495757A (zh) * | 2011-11-15 | 2012-06-13 | 深圳市融创天下科技股份有限公司 | 一种适用于java远程调用对象传输的优化方法、装置 |
CN104360865A (zh) * | 2014-11-28 | 2015-02-18 | 中国建设银行股份有限公司 | 一种序列化方法、反序列化方法及相关设备 |
CN104881461A (zh) * | 2015-05-22 | 2015-09-02 | 国云科技股份有限公司 | 一种快速数据保存方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU3300299A (en) * | 1998-02-20 | 1999-09-06 | Thomson Licensing S.A. | System for forming, partitioning and processing electronic program guides |
US7451432B2 (en) * | 2004-10-01 | 2008-11-11 | Microsoft Corporation | Transformation of componentized and extensible workflow to a declarative format |
CN100517224C (zh) * | 2007-06-13 | 2009-07-22 | 北京北大方正电子有限公司 | 对象的串行化存储和恢复的***和方法 |
CN102523128B (zh) * | 2011-12-31 | 2014-09-24 | 浙江万朋网络技术有限公司 | 一种远程数据传输中的数据同步方法 |
CN103488519B (zh) * | 2013-09-27 | 2016-05-25 | 上海野火网络科技有限公司 | 一种交互式脚本语言解释器的实现方法 |
JP6211949B2 (ja) * | 2014-02-12 | 2017-10-11 | 株式会社東芝 | データベース装置 |
CN103902698B (zh) * | 2014-03-31 | 2018-04-13 | 北京皮尔布莱尼软件有限公司 | 一种数据存储***和存储方法 |
CN104486396B (zh) * | 2014-12-10 | 2017-12-26 | 中国电信集团***集成有限责任公司 | 一种跨平台的网络数据的传输方法 |
CN104731654B (zh) * | 2015-04-03 | 2018-03-27 | 南京大学 | 一种针对安卓应用的迁移重构及支持*** |
CN104883292B (zh) * | 2015-04-16 | 2017-03-22 | 江苏中威科技软件***有限公司 | 实现消息在不同终端漫游的方法及*** |
-
2015
- 2015-11-02 CN CN201510735570.XA patent/CN106648569B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807168A (zh) * | 2010-03-15 | 2010-08-18 | 北京航空航天大学 | 一种支持版本兼容的数字终端测试环境及其构建方法 |
CN101826112A (zh) * | 2010-05-05 | 2010-09-08 | 山东中创软件工程股份有限公司 | 表单数据存储与读取方法、装置及*** |
CN102495757A (zh) * | 2011-11-15 | 2012-06-13 | 深圳市融创天下科技股份有限公司 | 一种适用于java远程调用对象传输的优化方法、装置 |
CN104360865A (zh) * | 2014-11-28 | 2015-02-18 | 中国建设银行股份有限公司 | 一种序列化方法、反序列化方法及相关设备 |
CN104881461A (zh) * | 2015-05-22 | 2015-09-02 | 国云科技股份有限公司 | 一种快速数据保存方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106648569A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106648569B (zh) | 目标序列化实现方法和装置 | |
US9558214B1 (en) | Secondary mappings to enable code changes without schema updates | |
WO2019085474A1 (zh) | 计算引擎实现方法、电子装置及存储介质 | |
WO2021217846A1 (zh) | 接口数据处理方法、装置、计算机设备和存储介质 | |
CN113204345A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN110365776B (zh) | 图片批量下载方法、装置、电子设备及存储介质 | |
CN115034176A (zh) | 文本处理方法、装置、电子设备和计算机可读存储介质 | |
CN107408055B (zh) | 代码缓存*** | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN106502707B (zh) | 代码生成方法及装置 | |
CN113760894A (zh) | 数据调取方法、装置、电子设备及存储介质 | |
CA3089289C (en) | System and methods for loading objects from hash chains | |
CN113127776A (zh) | 面包屑路径生成方法、装置及终端设备 | |
CN110795920A (zh) | 一种文档生成方法及设备 | |
US8578268B2 (en) | Rendering electronic documents having linked textboxes | |
US20180373688A1 (en) | Sharing annotations to web pages | |
US20170364496A1 (en) | Visualization interface for information object system | |
CN114969044A (zh) | 一种基于数据湖的物化列创建方法以及数据查询方法 | |
CN115905274A (zh) | 数据处理的方法、装置、电子设备及介质 | |
CN111881220A (zh) | 列表存储下的数据操作方法、装置、电子设备和存储介质 | |
JP6870454B2 (ja) | 分析装置、分析プログラム及び分析方法 | |
CN112347794A (zh) | 数据翻译方法、装置、设备及计算机存储介质 | |
CN111400623A (zh) | 用于搜索信息的方法和装置 | |
CN115390912B (zh) | 资源发现方法、装置、计算机设备和存储介质 | |
CN110134691B (zh) | 数据校验方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |