本发明专利技术提供了一种传递树形结构对象的方法,包括:将树形结构对象序列化为有结构的字符串;将有结构的字符串发送至接收端;以及在接收端将所述字符串反序列化为所述树形结构对象。根据本发明专利技术的传递树形结构对象的方法通过将树形对象序列化为尽可能小的有结构的字符串,并能从这个结构化的字符串反序列化为树形对象的技术来解决问题,由于网络传递的是字符串数据,所以能充分利用压缩技术的优势,进一步将网络传递数据量减到最小,有效的解决了树形对象在网络上的传递效率。
【技术实现步骤摘要】
本专利技术涉及,更具体地涉及在C/S结构的环境下传递一 个树形结构的对象的方法。
技术介绍
在C/S结构的环境下经常需要传递一个树形结构的对象,例如在客户端需要获得 服务器的目录结构,但是当这个树形结构非常巨大的情况下,通常的对象序列化的方式无 法减少网络数据的传输量,即使利用了压缩技术,也不能有效地解决传输数据量的问题。在Java中,为了便利,树形结构往往利用DefaultMutableTreeNode类或其子 类来表示,如果这个对象需要在网络上传输,通常的做法是利用默认的对象序列化技术, 将这个对象序列化到网络流里,但是当这个树形对象非常巨大的情况下,网络上的传递 效率将严重影响到应用。即使是使用了压缩技术,但其实效果并不很理想,因为通常的 压缩技术对文本的压缩率很高,而对于二进制的对象,压缩率并不高。而且,直接序列化 DefaultMutableTreeNode对象,里面包含了许多我们并不关心的数据,例如一些类信息,这 些数据的传递对带宽也是一种浪费。也有的实现方式是将树形对象序列化为一个xml文档 格式的字符串序列,但是xml文档中的结构化信息也占有较大的比例,有效数据的荷载并 不高,降低了网络的有效带宽。网络传输要解决的问题就是如何减少传输的数据量。针对常用技术的一些缺陷, 本专利技术要解决的技术问题是针对树形对象的一些特点,将树形对象序列化为一个有结构的 字符串,而这个有结构的字符串的结构化信息要尽可能地小,并且要能够从这个结构化的 字符串解析出树形对象,在此基础上,结合压缩技术的优势,将网络传输的数据量减少到最 低。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种,包括将所 述树形结构对象序列化为有结构的字符串;将所述有结构的字符串发送至接收端;以及在 所述接收端将所述字符串反序列化为所述树形结构对象。其中,将所述树形结构对象序列化为字符串的步骤可以包括定义控制字符;以 及使用所述控制字符和所述树形结构对象的节点的序列化值从树的根节点开始将所述树 形结构对象序列化为所述字符串。其中,控制字符可以包括父节点开始标识符、父节点结束标识符、以及叶子节点 标识符。其中,在所述接收端将所述字符串反序列化为所述树形结构对象步骤包括从所 述字符串中依次读取字符并判断所读取的每个字符是否为所述控制字符直到读完所述字 符串的结尾;以及如果确定所读取的字符不是所述控制字符,则继续读取所述字符串,否则 根据所读取的所述控制字符来确定所述树形结构对象的节点的类型,以及确定前面所读取的字符为所述树形结构对象的节点的序列化值。其中,当确定所读取的所述控制字符是所述父节点开始标识符时,将当前节点挂 到当前父节点,并将所述当前父节点设置为新的当前父节点。当确定所读取的所述控制字 符是所述父节点结束标识符时,表示当前父节点的所有子节点都解析完毕。当确定所读取 的所述控制字符是所述叶子节点标识符时,将当前节点挂到当前父节点上。其中,字符串可以存储在接收端并利用数字摘要技术对所述字符串进行版本标 示。在所述接收端请求所述树形结构对象时,利用所述版本标示确定所述树形结构对象是 否为新版本;以及在所述树形结构对象为新版本时,发送所述树形结构对象对应的所述字 符串,否则返回特定标识来表示所述树形结构对象不是新版本。在所述树形结构对象是新 版本时,更新存储在所述接收端的所述字符串。根据本专利技术的通过将树形对象序列化为尽可能小的有 结构的字符串,并能从这个结构化的字符串反序列化为树形对象的技术来解决问题,由于 网络传递的是字符串数据,所以能充分利用压缩技术的优势,进一步将网络传递数据量减 到最小,有效的解决了树形对象在网络上的传递效率。附图说明图1示出了根据本专利技术的的流程图;图2示出了根据本专利技术的实施例的中序列化流程图;以 及图3示出了根据本专利技术的实施例的中反序列化流程图。 具体实施例方式下面将参考附图详细说明根据本专利技术的。图1示出了根据本专利技术的的流程图。如图1所示,根据 本专利技术的包括步骤102,将树形结构对象序列化为有结构的字 符串;步骤104,将有结构的字符串发送至接收端;以及步骤106,在接收端将字符串反序列 化为树形结构对象。其中,步骤102可以包括定义控制字符;以及使用所述控制字符和所述树形结构 对象的节点的序列化值从树的根节点开始将所述树形结构对象序列化为所述字符串。控制 字符可以包括父节点开始标识符、父节点结束标识符、以及叶子节点标识符。其中,步骤106可以包括从所述字符串中依次读取字符并判断所读取的每个字 符是否为所述控制字符直到读完所述字符串的结尾;以及如果确定所读取的字符不是所述 控制字符,则继续读取所述字符串,否则根据所读取的所述控制字符来确定所述树形结构 对象的节点的类型,以及确定前面所读取的字符为所述树形结构对象的节点的序列化值。其中,当确定所读取的所述控制字符是所述父节点开始标识符时,将当前节点挂 到当前父节点,并将所述当前父节点设置为新的当前父节点。当确定所读取的所述控制字 符是所述父节点结束标识符时,表示当前父节点的所有子节点都解析完毕。当确定所读取 的所述控制字符是所述叶子节点标识符时,将当前节点挂到当前父节点上。其中,字符串可以存储在接收端并利用数字摘要技术对所述字符串进行版本标示。在所述接收端请求所述树形结构对象时,利用所述版本标示确定所述树形结构对象是 否为新版本;以及在所述树形结构对象为新版本时,发送所述树形结构对象对应的所述字 符串,否则返回特定标识来表示所述树形结构对象不是新版本。在所述树形结构对象是新 版本时,更新存储在所述接收端的所述字符串。下面将结合图2描述根据本专利技术的实施例的中序列化 流程图。在图2所示的实施例中,定义了控制字符,包括父节点开始标识符,在该实施例中 默认为“ < ”,父节点结束标识符,在该实施例中默认为“ > ”,以及叶子节点标识符,在该实 施例中默认为“ | ”,其语法定义为字符串序列值=(非叶子节点| |叶子节点)| (非叶子节点| |叶子节点)* ;非叶子节点=node < (非叶子节点| |叶子节点)| (非叶子节点| |叶子节点)* > ;叶子节点=node|,其中“*”表示0 n个,“ | |,,表示或者,node表示单个节点的序列化值。通过上面的结构化字符串可以表达任何的树形结构,并从这个字符串中解析出树 形结构。在此,本领域的技术人员应该理解,可以为父节点开始标识符、父节点结束标识符 以及叶子节点标识符预设默认值,而不必局限于上面的“<”、“>”和“ I ”。如图2所示,在步骤202,从树的根节点开始序列化;然后在步骤204判断树的根 节点是否有子节点,如果没有子节点(步骤204,否),则在步骤214输出节点的序列化值, 并在步骤216紧跟一个叶子节点标识符。如果确定包含有子节点(步骤204,是),则在步 骤206先输出节点的序列化值,并在步骤208紧跟一个父节点开始标识符,然后在步骤210 确定是否还有子节点没有输出,返回到步骤202,遍历所有的子节点递归地输出子节点的序 列化值,遍历结束后,再在步骤212输出一个父节点结束标识符。图3示出了根据本专利技术的实施例的中反序列化流程图。 如图3所示,在步骤302本文档来自技高网...
【技术保护点】
一种传递树形结构对象的方法,其特征在于,包括:将所述树形结构对象序列化为有结构的字符串;将有结构的所述字符串发送至接收端;以及在所述接收端将所述字符串反序列化为所述树形结构对象。
【技术特征摘要】
一种传递树形结构对象的方法,其特征在于,包括将所述树形结构对象序列化为有结构的字符串;将有结构的所述字符串发送至接收端;以及在所述接收端将所述字符串反序列化为所述树形结构对象。2.根据权利要求1所述的传递树形结构对象的方法,其特征在于,所述将所述树形结 构对象序列化为字符串的步骤包括定义控制字符;以及使用所述控制字符和所述树形结构对象的节点的序列化值从树的根节点开始将所述 树形结构对象序列化为所述字符串。3.根据权利要求2所述的传递树形结构对象的方法,其特征在于,所述控制字符包括 父节点开始标识符、父节点结束标识符、以及叶子节点标识符。4.根据权利要求2或3所述的传递树形结构对象的方法,其特征在于,所述在所述接收 端将所述字符串反序列化为所述树形结构对象步骤包括从所述字符串中依次读取字符并判断所读取的每个字符是否为所述控制字符直到读 完所述字符串的结尾;以及如果确定所读取的字符不是所述控制字符,则继续读取所述字符串,否则根据所读取 的所述控制字符来确定所述树形结构对象的节点的类型,以及确定前面所读取的字符为所 述树形结构对象的节点的序列化值。5.根据权利要求4所述的传递树形结构对象...
【专利技术属性】
技术研发人员:李充蒲,
申请(专利权)人:用友软件股份有限公司,
类型:发明
国别省市:11[中国|北京]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。