CN109491727A - 对象序列化方法、终端设备及计算机可读存储介质 - Google Patents
对象序列化方法、终端设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109491727A CN109491727A CN201811202028.8A CN201811202028A CN109491727A CN 109491727 A CN109491727 A CN 109491727A CN 201811202028 A CN201811202028 A CN 201811202028A CN 109491727 A CN109491727 A CN 109491727A
- Authority
- CN
- China
- Prior art keywords
- attribute
- node
- target
- value
- tree
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003491 array Methods 0.000 claims description 23
- 238000004590 computer program Methods 0.000 claims description 14
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000004883 computer application Methods 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000012163 sequencing technique Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于计算机应用技术领域,提供了对象序列化方法、终端设备及计算机可读存储介质,包括:获取待序列化的对象的对象标识、对象中每个属性的属性名称和属性值;根据对象的每个属性名称和属性值,创建至少一个字节数组形式的属性节点;根据对象中的每个属性之间的预置关系以及所有属性节点,构建对象节点树,完成对象序列化;对象节点树用于表示对象中每个属性的属性值和预置关系。通过获取并确定待序列化对象的对象标识、属性名称、属性值,并通过每个属性之间的预置关系构建对象节点树,通过对象节点树高效实现了对象的序列化,并清楚表示待序列化对象的各个属性的属性值,以及各个属性名称之间的预置关系。
Description
技术领域
本发明属于计算机应用技术领域,尤其涉及一种对象序列化方法、终端设备及计算机可读存储介质。
背景技术
在一些分布式的开发程序中,为了方便使用和数据通信,需要将对象的状态信息转换为可以保持或传输的形式,这个过程即序列化,而它的逆过程则称为反序列化,这两个过程结合起来,可以轻松地存储和传输数据。为了跨进程传递格式化数据,当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以序列的形式在网络上传送。发送方需要把这个对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为对象。
但是在面对数据类型较繁杂的进程时,现有的序列化方法往往不能高效、精简的将这些数据序列化。
发明内容
有鉴于此,本发明实施例提供了一种对象序列化方法、终端设备及计算机可读存储介质,以解决在面对数据类型较繁杂的进程时,现有的序列化方法往往不能高效、精简的将这些数据序列化的问题。
本发明实施例的第一方面提供了一种对象序列化方法,包括:
获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;
根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;
根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
本发明实施例的第二方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;
根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;
根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
本发明实施例与现有技术相比存在的有益效果是:
本发明实施例通过获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。通过获取并确定待序列化对象的对象标识、属性名称、属性值,并通过每个属性之间的预置关系构建对象节点树,通过对象节点树高效实现了对象的序列化,并能清楚表示出待序列化对象的各个属性的属性值,以及各个属性名称之间的预置关系。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的对象序列化方法的流程图;
图2是本发明实施例二提供的对象序列化方法的流程图;
图3是本发明实施例三提供的对象序列化方法的流程图;
图4是本发明实施例四提供的终端设备的示意图;
图5是本发明实施例五提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
参见图1,图1是本发明实施例一提供的对象序列化方法的流程图。本实施例中对象序列化方法的执行主体为终端。终端包括但不限于智能手机、平板电脑、可穿戴设备等移动终端,还可以是台式电脑等。如图所示的对象序列化方法可以包括以下步骤:
S101:获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值。
随着网络技术的发展,客户端与服务器端的数据交换可以采用越来越多的数据传输格式,然而开发者都力求在应用程序的开发过程中寻求最合适的、数据传输效率最高的一种,这样可以使应用程序的执行效率更高,获得更好的用户体验。可扩展标记语言(Extensible Markup Language,XML)是较早出现的数据交换的格式,它是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用,具有可读性,描述性强的优点。然而XML格式的数据在客户端显示需要经过文档对象模型(Document ObjectModel,DOM)树的解析。DOM定义了一组与平台和语言无关的接口,以便程序和脚本能够动态访问和修改XML文档内容、结构及样式,也就是告诉程序如何操作和显示这些标识。实际上XML将数据组织成为一棵树,DOM通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个对象,通过操作这棵树和这些对象就可以完成对XML文档的操作,为处理文档的所有方面提供了一个完美的概念性框架。在对数据对象进行序列化之前,需要先获取待序列化的对象的对象标识,该对象中每个属性的属性名称和属性值。
在本实施例中,属性值可以是每个对象中所包含的属性名称所对应的数据量,该数据量的数据类型包括但不限于整型、字符串等。例如,当待序列化的对象是每个用户的用户信息时,该对象中的属性就是用户信息中的姓名、身份证号、年龄等信息,对应的属性值就是这些用户信息属性下各自对应的数据量。需要说明的是,在本实施例中,每个对象的对象标识和对象中每个属性的命名必须遵循一下命名规则:
a、名称可以含字母、数字以及其他的字符;
b、名称不能以数字或者标点符号开始;
c、名称不能以字符“xml”开始;
d、名称不能包含空格;
e、可使用任何名称,没有保留的字词。
S102:根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点。
XML格式的数据的一个特点是在客户端显示需要经过DOM树的解析,通过定义一组与平台和语言无关的接口,以便程序和脚本能够动态访问和修改XML文档内容、结构及样式,也就是告诉程序如何操作和显示这些标识。实际上XML将数据组织成为一棵对象节点树。通过解析XML文档,为XML文档在逻辑上建立一个树模型,树的节点是一个个对象,通过操作这棵对象节点树和这些对象就可以完成对XML文档的操作,为处理文档的所有方面提供了一个完美的概念性框架。该模型定义了HTML和XML文件在内存中的文档结构,提供了对HTML和XML文件的访问存取方法。利用DOM规范,可以实现DOM文档和XML文件之间的相互转换,对相应的DOM文档内容进行遍历或其他操作。如果要自由的操纵XML文件,就要用到DOM规范。
在本实施例中,通过解析XML文档,为XML文档在逻辑上建立一个树模型,对象节点树的节点是一个个对象,通过存取这些对象就能够操作XML文件中的内容。本实施例中的这种方式易用性强,把所有的XML文档信息都存于内存中,并且遍历简单,并增强了易用性。
S103:根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
通过一组对象把XML文档模型化,文档中的元素、属性、实体等都可以用对象模型表示。文档的逻辑结构是一棵对象节点树,生成的对象模型是对象节点树的节点。每个对象包含了属性与方法。
示例性的,通过以下HTML文档编写一个对象节点树结构:
<html>
<head>
<title>DOM Tutorial</title>
</head>
<body>
<h1>DOM Lesson one</h1>
<p>Hello world!</p>
</body>
</html>
上面所有的节点彼此间都存在关系。除文档节点之外的每个节点都有父节点。示例性的,<head>和<body>的父节点是<html>节点,文本节点“Hello world!”的父节点是<p>节点。大部分元素节点都有子节点。比方说,<head>节点有一个子节点:<title>节点。<title>节点也有一个子节点:文本节点“DOM Tutorial”。当节点分享同一个父节点时,它们就是同辈,即同级节点。比方说,<h1>和<p>是同辈,因为它们的父节点均是<body>节点。节点也可以拥有后代,后代指某个节点的所有子节点,或者这些子节点的子节点,以此类推。比方说,所有的文本节点都是<html>节点的后代,而第一个文本节点是<head>节点的后代。节点也可以拥有先辈。先辈是某个节点的父节点,或者父节点的父节点,以此类推。比方说,所有的文本节点都可把<html>节点作为先辈节点。
进一步的,步骤S103可以具体包括:
获取所述对象中每个属性之间的关联关系和从属关系;
根据所述从属关系确定所述属性节点中的父节点以及从属于所述父节点的子节点,并在所述父节点中添加所述子节点和所述子节点的属性值;
根据每个所述父节点和所述子节点之间的所述关联关系和所述从属关系构建对象节点树,完成对象序列化。
在本实施例中,对象中的每个属性之间的预置关系包括关联关系和从属关系,其中关联关系用于表示同级别的节点之间的联系,从属关系用于表示不同级别的节点之间的联系,例如父节点和子节点之间的关系。本实施例中将所有节点对象对应的数据类型分为3大部分:值数组、字符串数组以及字节数组区,用于表示不同节点对象所包含的数据值。
其中,字节数组区包括节点数组和字节数组两种各类型:字节数组用于表示数据名称及其对应的数值或者字符串,节点对象可以添加整型、字符串等类型的数值;节点数组用于表示数值名称及其对应的下层节点对象。通过在字节数组区中包含了字节数组可以使得节点对象有自己的子节点,以表示出进程数据之间的层次从属关系。这样一个节点通过添加子节点,子节点再可以添加子节点,因此便可以层层创建待序列化的节点对象属下的界定子节点,即节点数组的形式,层层关联之后最终会得到一个字节数组区,就可以形成一个对象节点树,对象节点树中包括了各种层级的节点,每个节点用于表示每个对象的对象信息,即通过对象节点树达到序列化的目的,以用于存储和网络间的传输。
示例性的,在对商家及其产品数据进行序列化时的例子:
Node product=new Node()//创建Node
node.addString(“Node10000”)//添加node类型
node.addString(“name”)//添加名称
node.addString(“merchant”)//添加商家
node.addValue(100000)//数量
node.addValue(1000)//价格10.00用整数表示
Node subProduct=new Node()//创建Child Node
subProduct.addString(“subname”)
subProduct.addString(“submercant”)
node.addChild(subProduct)//添加Child Node
byte[]bytes=node.toBytes()//序列化成字节数组
在以上实施例中,商家相当于是待序列化的对象,该对象中包括了数量、价格等属性名称,这些属性之间为并列关系,而这些属性与对象之间则为子节点与父节点的关系,这些属性中又包括了100000、1000等数值作为属性值,通过构建对象节点树既可以清楚的表示出待序列化对象的各个属性的属性值,有可以保证每个属性值之间的关联关系和从属关系。
上述方案,通过获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。通过获取并确定待序列化对象的对象标识、属性名称、属性值,并通过每个属性之间的预置关系构建对象节点树,通过对象节点树高效实现了对象的序列化,并能清楚表示出待序列化对象的各个属性的属性值,以及各个属性名称之间的预置关系。
参见图2,图2是本发明实施例二提供的对象序列化方法的流程图。本实施例中对象序列化方法的执行主体为终端。终端包括但不限于智能手机、平板电脑、可穿戴设备等移动终端,还可以是台式电脑等。如图所示的对象序列化方法可以包括以下步骤:
S201:获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值。
在本实施例中S201与图1对应的实施例中S101的实现方式完全相同,具体可参考图1对应的实施例中的S101的相关描述,在此不再赘述。
S202:根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点。
在本实施例中S202与图1对应的实施例中S102的实现方式完全相同,具体可参考图1对应的实施例中的S102的相关描述,在此不再赘述。
S203:根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
进一步的,步骤S203可以具体包括:
S2031:根据所述对象的对象标识生成私钥。
在实际应用中,一些数据中可能存在敏感字段,比如年龄、性别或者电话号码等等,图像也可能涉及机密或隐私,序列化的优点是序列化之后的数据格式比较简单且统一,可以对其运用加密算法或者自定义加密算法进行加密。数据发送方将加密后的二进制流写入Redis缓存中,数据接收方需先将接收到的二进制流进行解密,再进行反序列化。即使代表每个节点对象的关键词的变量名称被泄露,该变量名称对应的数值或者子节点还需先解密才能被成功的反序列化,对于无密钥的数据拦截者而言无法获取原始数据,从而保证了数据的安全。
在本实施例中,考虑到每个对象的对象标识都不相同,则可以根据每个对象标识生成私钥,用于对属性节点的信息进行加密。示例性的,可以通过ssh-keygen方式生成加密长度4096位密钥,生成私钥的语句为:ssh-keygen-t rsa-b 4096-f${private}.key;生成加密长度1024位密钥,生成私钥的语句为:ssh-keygen-t rsa-b 1024-f${private}.key。
除此之外,还可以通过开放式安全套接层协议(Open Secure Sockets Layer,OpenSSL)方式生成对象标识的私钥,OpenSSL是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及OpenSSL协议,并提供丰富的应用程序供测试或其它目的使用。OpenSSL可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了OpenSSL协议标准。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。OpenSSL能使用户以及服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。OpenSSL协议要求建立在可靠的传输层协议之上。OpenSSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议能透明地建立于OpenSSL协议之上。OpenSSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。
S2032:采用所述私钥对所有所述属性节点的信息进行加密,得到所述属性名称对应的加密数值。
将所生成的私钥对该属性节点中的信息进行加密,得到属性名称对应的加密数值,保证了序列化对象的数据安全。具体的,对节点信息进行加密时,可以通过对称加密算法或者非对称加密算法进行加密。对称加密算法在加密和解密时使用的是同一个秘钥;而非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公钥和私钥。非对称加密与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。在非对称加密中使用的主要算法有Elgamal算法、背包算法、D-H矩阵(Denavit-HartenbergMatrix,D-H)、椭圆曲线加密算法(Error Correcting Code,ECC)等。
S2033:根据所述每个属性之间的预置关系、所述属性名称对应的加密数值,构建所述对象节点树。
在对属性节点的信息进行更加之后,得到加密数值,根据每个属性之间的预置关系、属性名称及其对应的加密数值,构建对象节点树,完成对象序列化。
上述方案,通过获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;根据所述对象的对象标识生成私钥;采用所述私钥对所有所述属性节点的信息进行加密,得到所述属性名称对应的加密数值;根据所述每个属性之间的预置关系、所述属性名称对应的加密数值,构建所述对象节点树。通过在获取到待序列化的对象、该对象的属性名称和属性值之后,先对这些属性值进行加密得到加密数值,再根据加密数值和属性之间的预置关系建立对象节点树,通过对象节点树高效实现对象的序列化,并通过预设的变量名称代表每个节点对象的关键词,使节点序列化的字符更加精简和保密,最后在对象序列化之后将其进行加密,保证了数据的安全性。
参见图3,图3是本发明实施例三提供的对象序列化方法的流程图。本实施例中对象序列化方法的执行主体为终端。终端包括但不限于智能手机、平板电脑、可穿戴设备等移动终端,还可以是台式电脑等。如图所示的对象序列化方法可以包括以下步骤:
S301:获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值。
在本实施例中S301与图1对应的实施例中S101的实现方式完全相同,具体可参考图1对应的实施例中的S101的相关描述,在此不再赘述。
S302:根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点。
在本实施例中S302与图1对应的实施例中S102的实现方式完全相同,具体可参考图1对应的实施例中的S101的相关描述,在此不再赘述。
S303:根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
在本实施例中S303与图1对应的实施例中S103的实现方式完全相同,具体可参考图1对应的实施例中的S101的相关描述,在此不再赘述。
S304:获取待提取属性值的对象的目标对象标识和目标属性名称。
在数据对象进行序列化之后,在需要这个对象的数据信息的情况下,需要对其进行反序列化。序列化是一种将对象以一连串的字节描述的过程,而反序列化则是将这些字节重建成一个对象的过程。Java中,一切都是对象,在分布式环境中经常需要将该对象从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议,Java序列化机制就是为了解决这个问题而产生。
首先获取待提取属性值的对象的目标对象标识和目标属性名称。示例性的,在需要获取用户的身份信息中的身份证号码时,这种情况下的目标对象标识即用户的用户名称,目标属性名称即身份证号码。
S305:根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点。
通过若干种方法查找目标对象标识中的目标属性在目标对象节点树中的节点信息,示例性的,getElementById()和getElementsByTagName()这两种方法,可查找整个HTML文档中的任何HTML元素。这两种方法会忽略文档的结构。若希望查找文档中所有的<p>元素,getElementsByTagName()会把它们全部找到,不管<p>元素处于文档中的哪个层次。同时,getElementById()方法也会返回正确的元素,不论它被隐藏在文档结构中的什么位置。
这两种方法会提供任何所需的HTML元素,不论它们在文档中所处的位置。getElementById()可通过指定的ID来返回元素,其语法为document.getElementById("ID")。getElementById()无法工作在XML中。在XML文档中,必须通过拥有类型ID的属性来进行搜索,而此类型必须在XML中进行声明。
getElementsByTagName()方法会使用指定的标签名返回所有的元素,作为一个节点列表,这些元素是在使用此方法时所处的元素的后代。getElementsByTagName()可被用于任何的HTML元素,其语法形式为:
document.getElementsByTagName("标签名称");
或者为:document.getElementById('ID').getElementsByTagName("标签名称")。
通过在确定目标对象标识对象的目标对象节点树之后,可以根据目标属性名称确定该目标对象节点树中的目标属性节点,进而通过该目标属性节点的字节数组中的属性值确定待提取属性值。
S306:识别所述目标属性节点的字节数组中的属性值为所述待提取属性值。
在序列化结束之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。在接收到该序列化数据之后,或者进程操作者需要继续调用该进程时,则需要把字节序列再恢复为对象,即根据字节数组反序列化为节点,进而得到原对象的属性值。
示例性的,在序列化结束之后,接收方则需要把字节序列再恢复为对象的例子如下:
Node node=new Node(bytes,0);//参数为序列化的字节数组,后一个参数为起始startIndex
String type=node.getStringAt(0)//获取node type类型
String name=node.getStringAt(1)//获取产品名称
String merchantName=node.getStringAt(2)//获取商家名称
long count=node.getValueAt(0)//获取数量
long price=node.getValueAt(1)//获取价格
Node subProduct=node.getChildAt(0)//获取子node
String subName=subProduct.getStringAt(0)//获取子产品名称
String subMerchantName=node.getStringAt(1)//获取子产品商家名称
进一步的,步骤S303之后可以包括步骤
获取待提取属性值的对象的目标对象标识和目标属性名称;
根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点的目标字节数组;
根据所述目标对象标识生成公钥,并采用所述公钥对所述目标字节数组中的加密数值进行解密,得到的解密数据为所述待提取属性值。
具体的,若数据发送端对数据对象进行序列化之后,还对这些序列化后的数据进行了加密,则需要通过接收到的密钥或者接收端的公钥先对其进行解密,得到解密之后的数据,再对解密之后的数据进行反序列化。通过这种方式保证数据对象在序列化、反序列化以及数据的传输或者存储过程中的安全性和保密性。具体可以通过待提取属性值的对象的目标对象标识生成公钥,并采用所述公钥对所述目标字节数组中的加密数值进行解密,得到的解密数据为所述待提取属性值。示例性的,可以通过ssh-keygen方式生成加密长度4096位密钥,生成公钥的语句为:openssl rsa-in${private}.key-pubout-outform PEM-out${public}.key.pub;生成加密长度1024位密钥,生成公钥的语句为:openssl rsa-in${private}.key-pubout-outform PEM-out${public}.key.pub。
上述方案,通过获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。获取待提取属性值的对象的目标对象标识和目标属性名称;根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点的目标字节数组;根据所述目标对象标识生成公钥,并采用所述公钥对所述目标字节数组中的加密数值进行解密,得到的解密数据为所述待提取属性值。通过待提取属性值的对象的目标对象标识生成公钥,并采用所述公钥对所述目标字节数组中的加密数值进行解密,得到的解密数据为所述待提取属性值,保证了对象在反序列化过程中的效率和数性据的安全。
参见图4,图4是本发明实施例四提供的一种终端设备的示意图。终端设备包括的各单元用于执行图1~图3对应的实施例中的各步骤。具体请参阅图1~图3各自对应的实施例中的相关描述。为了便于说明,仅示出了与本实施例相关的部分。本实施例的终端设备400包括:
对象获取单元401,应用获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;
节点创建单元402,用于根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;
第一建树单元403,用于根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
进一步的,第一建树单元403可以包括:
关系获取单元,用于获取所述对象中每个属性之间的关联关系和从属关系;
节点从属单元,用于根据所述从属关系确定所述属性节点中的父节点以及从属于所述父节点的子节点,并在所述父节点中添加所述子节点和所述子节点的属性值;
第二建树单元,用于根据每个所述父节点和所述子节点之间的所述关联关系和所述从属关系构建对象节点树,完成对象序列化。
进一步的,第一建树单元403可以包括:
私钥生成单元,根据所述对象的对象标识生成私钥;
加密单元,用于采用所述私钥对所有所述属性节点的信息进行加密,得到所述属性名称对应的加密数值;
第三建树单元,根据所述每个属性之间的预置关系、所述属性名称对应的加密数值,构建所述对象节点树。
进一步的,所述终端设备还可以包括:
第一获取单元,用于获取待提取属性值的对象的目标对象标识和目标属性名称;
节点确定单元,用于根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点;
属性值确定单元,用于识别所述目标属性节点的字节数组中的属性值为所述待提取属性值。
进一步的,第一建树单元403可以包括:
第二获取单元,用于获取待提取属性值的对象的目标对象标识和目标属性名称;
目标确定单元,用于根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点的目标字节数组;
解密单元,用于根据所述目标对象标识生成公钥,并采用所述公钥对所述目标字节数组中的加密数值进行解密,得到的解密数据为所述待提取属性值。
上述方案,获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。通过获取并确定待序列化对象的对象标识、属性名称、属性值,并通过每个属性之间的预置关系构建对象节点树,通过对象节点树高效实现了对象的序列化,并能清楚表示出待序列化对象的各个属性的属性值,以及各个属性名称之间的预置关系。
图5是本发明实施例五提供的终端设备的示意图。如图5所示,该实施例的终端设备5包括:处理器50、存储器51以及存储在所述存储器51中并可在所述处理器50上运行的计算机程序52。所述处理器50执行所述计算机程序52时实现上述各个对象序列化方法实施例中的步骤,例如图1所示的步骤101至103。或者,所述处理器50执行所述计算机程序52时实现上述各装置实施例中各模块/单元的功能,例如图4所示单元401至403的功能。
示例性的,所述计算机程序52可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器51中,并由所述处理器50执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序52在所述终端设备5中的执行过程。
所述终端设备5可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是终端设备5的示例,并不构成对终端设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器50可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器51可以是所述终端设备5的内部存储单元,例如终端设备5的硬盘或内存。所述存储器51也可以是所述终端设备5的外部存储设备,例如所述终端设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card,FC)等。进一步地,所述存储器51还可以既包括所述终端设备5的内部存储单元也包括外部存储设备。所述存储器51用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种对象序列化方法,其特征在于,包括:
获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;
根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;
根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
2.如权利要求1所述的对象序列化方法,其特征在于,所述预置关系包括关联关系和从属关系;根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化,包括:
获取所述对象中每个属性之间的关联关系和从属关系;
根据所述从属关系确定所述属性节点中的父节点以及从属于所述父节点的子节点,并在所述父节点中添加所述子节点和所述子节点的属性值;
根据每个所述父节点和所述子节点之间的所述关联关系和所述从属关系构建对象节点树,完成对象序列化。
3.如权利要求1所述的对象序列化方法,其特征在于,根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化,包括:
根据所述对象的对象标识生成私钥;
采用所述私钥对所有所述属性节点的信息进行加密,得到所述属性名称对应的加密数值;
根据所述对象的对象标识、所述每个属性之间的预置关系、所述属性名称对应的加密数值,构建所述对象节点树。
4.如权利要求1-3任一项所述的对象序列化方法,其特征在于,根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化之后,还包括:
获取待提取属性值的对象的目标对象标识和目标属性名称;
根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点;
识别所述目标属性节点的字节数组中的属性值为所述待提取属性值。
5.如权利要求3所述的对象序列化方法,其特征在于,根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化之后,还包括:
获取待提取属性值的对象的目标对象标识和目标属性名称;
根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点的目标字节数组;
根据所述目标对象标识生成公钥,并采用所述公钥对所述目标字节数组中的加密数值进行解密,得到的解密数据为所述待提取属性值。
6.一种终端设备,其特征在于,包括存储器以及处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如下步骤:
获取待序列化的对象的对象标识、所述对象中每个属性的属性名称和属性值;
根据所述对象的每个所述属性名称和所述属性值,创建至少一个字节数组形式的属性节点;
根据所述对象中的每个属性之间的预置关系以及所有所述属性节点,构建对象节点树,完成对象序列化;所述对象节点树用于表示所述对象中每个属性的属性值和预置关系。
7.如权利要求6所述的终端设备,其特征在于,所述预置关系包括关联关系和从属关系;根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化,包括:
获取所述对象中每个属性之间的关联关系和从属关系;
根据所述从属关系确定所述属性节点中的父节点以及从属于所述父节点的子节点,并在所述父节点中添加所述子节点和所述子节点的属性值;
根据每个所述父节点和所述子节点之间的所述关联关系和所述从属关系构建对象节点树,完成对象序列化。
8.如权利要求6所述的终端设备,其特征在于,根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化,包括:
根据所述对象的对象标识生成私钥;
采用所述私钥对所有所述属性节点的信息进行加密,得到所述属性名称对应的加密数值;
根据所述每个属性之间的预置关系、所述属性名称对应的加密数值,构建所述对象节点树。
9.如权利要求6-8任一项所述的终端设备,其特征在于,根据所述对象的对象标识、所述对象中的所述属性之间的预置关系、所有所述属性节点的属性名称和属性值,构建对象节点树,完成对象序列化之后,还包括:
获取待提取属性值的对象的目标对象标识和目标属性名称;
根据所述目标对象标识确定所述目标对象节点树,并根据所述目标属性名称确定所述目标对象节点树中的目标属性节点;
识别所述目标属性节点的字节数组中的属性值为所述待提取属性值。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811202028.8A CN109491727A (zh) | 2018-10-16 | 2018-10-16 | 对象序列化方法、终端设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811202028.8A CN109491727A (zh) | 2018-10-16 | 2018-10-16 | 对象序列化方法、终端设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109491727A true CN109491727A (zh) | 2019-03-19 |
Family
ID=65690352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811202028.8A Pending CN109491727A (zh) | 2018-10-16 | 2018-10-16 | 对象序列化方法、终端设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109491727A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795102A (zh) * | 2019-09-27 | 2020-02-14 | 上海掌门科技有限公司 | 模块编译方法、装置、电子设备和计算机可读介质 |
CN111506781A (zh) * | 2020-04-21 | 2020-08-07 | 四川创智联恒科技有限公司 | 一种大幅压缩数据库体积的方法、系统、终端设备和可读存储介质 |
CN112287177A (zh) * | 2020-11-25 | 2021-01-29 | 城云科技(中国)有限公司 | 一种创建、变更、显示和查询对象标签的方法和装置 |
CN112905847A (zh) * | 2021-01-13 | 2021-06-04 | 浪潮云信息技术股份公司 | 树状结构的构建方法和装置 |
CN112989139A (zh) * | 2019-12-13 | 2021-06-18 | 北京国基科技股份有限公司 | 一种数据查找方法及装置 |
CN114528043A (zh) * | 2022-02-11 | 2022-05-24 | 腾讯科技(深圳)有限公司 | 文件加载方法、装置、设备及计算机可读存储介质 |
CN116301666A (zh) * | 2023-05-17 | 2023-06-23 | 杭州数云信息技术有限公司 | Java对象序列化方法及其反序列化方法及装置、终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108627A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Serialization and preservation of objects |
CN102650999A (zh) * | 2011-02-28 | 2012-08-29 | 株式会社理光 | 一种从网页中抽取对象属性值信息的方法和系统 |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN104899316A (zh) * | 2015-06-17 | 2015-09-09 | 北京奇虎科技有限公司 | 游戏数据的序列化与反序列化处理方法及装置 |
CN107766107A (zh) * | 2017-10-31 | 2018-03-06 | 四川长虹电器股份有限公司 | 基于Xpath 语言的xml文件通用解析器的解析方法 |
-
2018
- 2018-10-16 CN CN201811202028.8A patent/CN109491727A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050108627A1 (en) * | 2003-11-13 | 2005-05-19 | International Business Machines Corporation | Serialization and preservation of objects |
CN102650999A (zh) * | 2011-02-28 | 2012-08-29 | 株式会社理光 | 一种从网页中抽取对象属性值信息的方法和系统 |
CN102981884A (zh) * | 2012-11-22 | 2013-03-20 | 用友软件股份有限公司 | 序列化装置和序列化方法 |
CN104899316A (zh) * | 2015-06-17 | 2015-09-09 | 北京奇虎科技有限公司 | 游戏数据的序列化与反序列化处理方法及装置 |
CN107766107A (zh) * | 2017-10-31 | 2018-03-06 | 四川长虹电器股份有限公司 | 基于Xpath 语言的xml文件通用解析器的解析方法 |
Non-Patent Citations (2)
Title |
---|
A_山水子农: "XML文件生成和解析", Retrieved from the Internet <URL:http://www.blog.csdn.net/qq_27616333/article/details/51548461> * |
陈晓峰, 王世安: "基于Java的文档对象模型的技术", 抚顺石油学院学报, no. 02 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795102A (zh) * | 2019-09-27 | 2020-02-14 | 上海掌门科技有限公司 | 模块编译方法、装置、电子设备和计算机可读介质 |
CN110795102B (zh) * | 2019-09-27 | 2023-08-29 | 上海掌门科技有限公司 | 模块编译方法、装置、电子设备和计算机可读介质 |
CN112989139A (zh) * | 2019-12-13 | 2021-06-18 | 北京国基科技股份有限公司 | 一种数据查找方法及装置 |
CN112989139B (zh) * | 2019-12-13 | 2023-10-27 | 北京国基科技股份有限公司 | 一种数据查找方法及装置 |
CN111506781A (zh) * | 2020-04-21 | 2020-08-07 | 四川创智联恒科技有限公司 | 一种大幅压缩数据库体积的方法、系统、终端设备和可读存储介质 |
CN112287177A (zh) * | 2020-11-25 | 2021-01-29 | 城云科技(中国)有限公司 | 一种创建、变更、显示和查询对象标签的方法和装置 |
CN112905847A (zh) * | 2021-01-13 | 2021-06-04 | 浪潮云信息技术股份公司 | 树状结构的构建方法和装置 |
CN114528043A (zh) * | 2022-02-11 | 2022-05-24 | 腾讯科技(深圳)有限公司 | 文件加载方法、装置、设备及计算机可读存储介质 |
CN114528043B (zh) * | 2022-02-11 | 2023-07-14 | 腾讯科技(深圳)有限公司 | 文件加载方法、装置、设备及计算机可读存储介质 |
CN116301666A (zh) * | 2023-05-17 | 2023-06-23 | 杭州数云信息技术有限公司 | Java对象序列化方法及其反序列化方法及装置、终端 |
CN116301666B (zh) * | 2023-05-17 | 2023-10-10 | 杭州数云信息技术有限公司 | Java对象序列化方法及其反序列化方法及装置、终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491727A (zh) | 对象序列化方法、终端设备及计算机可读存储介质 | |
Aljawarneh et al. | A resource-efficient encryption algorithm for multimedia big data | |
Suhail et al. | On the role of hash-based signatures in quantum-safe internet of things: Current solutions and future directions | |
Zhou et al. | Security and privacy for the industrial internet of things: An overview of approaches to safeguarding endpoints | |
Comon-Lundh et al. | Computational soundness of observational equivalence | |
Cervesato et al. | A meta-notation for protocol analysis | |
CN109478223A (zh) | 区块链实现的方法和系统 | |
Teng et al. | A Modified Advanced Encryption Standard for Data Security. | |
CN104967693B (zh) | 面向云存储的基于全同态密码技术的文档相似度计算方法 | |
CN110516464A (zh) | 基于神经网络计算的数据保护方法及相关设备 | |
CN109241484A (zh) | 一种基于加密技术的网页数据的发送方法及设备 | |
Sun et al. | Research on logistics information blockchain data query algorithm based on searchable encryption | |
CN109885990A (zh) | 脚本管理方法 | |
CN109376021A (zh) | 接口调用的响应方法及服务器 | |
CN108304733A (zh) | 加密数据搜索方法及可加密搜索的数据存储系统 | |
Mödersheim et al. | Sufficient conditions for vertical composition of security protocols | |
CN114598472A (zh) | 基于区块链的条件隐藏可搜索代理重加密方法及存储介质 | |
Dhasade et al. | TEE-based decentralized recommender systems: The raw data sharing redemption | |
Kumar et al. | Data security and encryption technique for cloud storage | |
CN109343971A (zh) | 一种基于缓存技术的浏览器数据传递方法及装置 | |
Yang et al. | Federated Medical Learning Framework Based on Blockchain and Homomorphic Encryption | |
Shah et al. | Secure featurization and applications to secure phishing detection | |
CN111130788B (zh) | 数据处理方法和系统、数据读取方法和iSCSI服务器 | |
Kumar | Advanced RSA cryptographic algorithm for improving data security | |
Dekker et al. | Privacy-preserving data aggregation with probabilistic range validation |
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 |