一种数据还原方法、装置、计算机设备及存储介质与流程

文档序号:35212280发布日期:2023-08-24 13:48阅读:26来源:国知局
一种数据还原方法、装置、计算机设备及存储介质与流程

本公开涉及计算机,具体而言,涉及一种数据还原方法、装置、计算机设备及存储介质。


背景技术:

1、目前,越来越多的数据使用json(javascript object notation)格式进行表示,如客户端在展示商品页时,服务器通常使用json格式将各商品的名称、简介、价格等信息发送至客户端进行展示,又如客户端存储的通讯录中,各联系人的电话、姓名、住址等都可以以json格式存储在客户端。但是,如果json数据较大(如包含几万个商品的相关信息),就会导致数据传输较慢或者数据读写较慢,从而使基于json数据展示的信息在展示时出现卡顿、白屏等情况。

2、相关技术中,通常会采用以下几种压缩方法降低json数据的大小:将json数据中的空格和换行符删除、将json数据中的重复键(key)提取出来,并以索引的方式调用重复键、将json数据的重复键提取出来,并在重复键后对应放置各项数据中该重复键对应的值(value)。但是,这些方法都只能针对单个json数据进行压缩,压缩效果较差,在传输或者读写数据时,仍需要传输或者读写较大的json数据。


技术实现思路

1、本公开实施例至少提供一种数据还原方法、装置、计算机设备及存储介质。

2、第一方面,本公开实施例提供了一种数据还原方法,包括:

3、响应于针对目标数据的还原指令,获取对目标数据进行压缩后得到的键数组和值数组;其中,所述键数组用于表征所述目标数据中各层级的数据结构,所述键数组中包括所述目标数据的各键值对的键,所述值数组用于表征所述目标数据中各层级的数据结构内的取值,所述目标数据的数据格式为json;

4、基于所述键数组和所述值数组,确定所述目标数据中各层级的数据结构和各数据结构内的取值,以对所述目标数据进行还原,得到所述目标数据的还原结果。

5、一种可能的实施方式中,所述获取对目标数据进行压缩后得到的键数组和值数组,包括:

6、向服务器发送与所述还原指令对应的数据获取请求;

7、接收所述服务器发送的所述目标数据的键数组和值数组。

8、一种可能的实施方式中,所述值数组、键数组以及所述键数组的键数组索引存储在第一存储空间中,所述值数组与所述值数组对应的键数组的键数组索引对应存储;所述键数组在读取到第二存储空间之后,在所述第二存储空间中缓存;

9、所述获取对目标数据进行压缩后得到的键数组和值数组,包括:

10、基于所述还原指令携带的所述目标数据的数据索引,从所述第一存储空间中获取与所述数据索引对应的值数组,以及对应存储的键数组索引;

11、基于所述对应存储的键数组索引,从所述第二存储空间中查找是否缓存有对应的键数组;

12、若是,则直接从所述第二存储空间中读取对应的键数组;

13、若否,则从所述第一存储空间中读取对应的键数组。

14、一种可能的实施方式中,所述基于所述键数组和所述值数组,确定所述目标数据中各层级的数据结构和各数据结构内的取值,包括:

15、针对任一层级,基于所述键数组确定该层级对应的第一键数组;

16、判断该层级对应的第一键数组是否为空数组或者不存在;

17、若是,则确定该层级的数据结构为数组,并将所述值数组中该层级对应的第一值数组作为该层级的数组的取值。

18、一种可能的实施方式中,在该层级对应的第一键数组不为空数组或者不存在的情况下,所述方法还包括:

19、确定该层级的目标数据结构;

20、基于与所述目标数据结构对应的确定方法,确定该层级的数据结构内的取值。

21、一种可能的实施方式中,所述确定该层级的目标数据结构,包括:

22、在所述第一键数组中数组元素仅有一个,且该数组元素的数据类型为数组的情况下,确定该层级的目标数据结构为数组;

23、否则,确定该层级的目标数据结构为对象。

24、一种可能的实施方式中,所述基于与所述目标数据结构对应的确定方法,确定该层级的数据结构内的取值,包括:

25、在所述目标数据结构为数组的情况下,确定该层级的各数组元素对应的层级的取值;

26、基于各数组元素对应的层级的取值,确定该层级的数组的取值。

27、一种可能的实施方式中,所述基于与所述目标数据结构对应的确定方法,确定该层级的数据结构内的取值,包括:

28、在所述目标数据结构为对象的情况下,基于所述第一键数组中各键的下标,确定该层级对应的第一值数组中分别与该层级的键下标匹配的值;

29、基于该层级的各键和与各键下标匹配的值,确定该层级的对象的取值。

30、一种可能的实施方式中,所述基于所述第一键数组中各键的下标,确定该层级对应的第一值数组中分别与该层级的键下标匹配的值,包括:

31、针对该层级的任一键,在所述第一键数组中存在该键对应的第二键数组的情况下,基于该键的下标,确定所述值数组中与所述第二键数组对应的第二值数组,并基于所述第二值数组,以及所述第二键数组,确定该键下子层级的取值;

32、将所述子层级的取值作为与该键下标匹配的值。

33、一种可能的实施方式中,所述方法还包括根据以下方法对所述目标数据进行压缩,以确定所述键数组:

34、针对任一层级,确定该层级对应的数据结构;

35、基于各层级之间的嵌套关系、以及与该层级对应的数据结构匹配的键确定方法,确定该层级对应的第一键数组;

36、基于各层级对应的第一键数组,确定所述键数组。

37、一种可能的实施方式中,在任一层级对应的数据结构为对象的情况下,所述基于各层级之间的嵌套关系、以及与该层级对应的数据结构匹配的键确定方法,确定该层级对应的第一键数组,包括:

38、在该层级有对应的子层级的情况下,遍历该层级对应的所有子层级,确定所述所有子层级的第二键数组;基于所述第二键数组、以及该层级的键,确定该层级对应的第一键数组;

39、在任一层级对应的数据结构为数组的情况下,所述基于各层级之间的嵌套关系、以及与该层级对应的数据结构匹配的键确定方法,确定该层级对应的第一键数组,包括:

40、在该层级的数组元素对应有子层级的情况下,遍历各数组元素对应的子层级,确定各数组元素的第三键数组;将属于同一数组的数组元素的第三键数组进行合并处理,并基于合并处理后的第三键数组,确定该层级对应的第一键数组。

41、一种可能的实施方式中,所述方法还包括根据以下方法对所述目标数据进行压缩,以确定所述值数组:

42、针对数据结构为对象的任一层级中的任一键,确定该键是否存在对应的值;若否,确定该键对应的值不存在;若是,在该键下不存在子层级的情况下,直接基于该层级的键值对的取值确定该键对应的值;以及,在该键下存在子层级的情况下,确定与该键下的子层级对应的第二值数组,并基于该键下的子层级对应的第二值数组,确定该键对应的值;基于该层级中各个键对应的值,确定该层级对应的第一值数组;基于各层级对应的第一值数组、以及各个层级之间的嵌套关系,确定所述值数组;

43、针对数据结构为数组的任一层级,确定该层级对应的第一键数组是否为空数组或者不存在;若是,将所述目标数据中该层级的数组作为该层级对应的第一值数组;若否,确定所述目标数据中该层级的各个数组元素对应的第三值数组,并基于所述各个数组元素对应的第三值数组,确定该层级对应的第一值数组;基于各层级对应的第一值数组、以及各层级之间的嵌套关系,生成值数组。

44、第二方面,本公开实施例还提供一种数据还原装置,包括:

45、获取模块,用于响应于针对目标数据的还原指令,获取对目标数据进行压缩后得到的键数组和值数组;其中,所述键数组用于表征所述目标数据中各层级的数据结构,所述键数组中包括所述目标数据的各键值对的键,所述值数组用于表征所述目标数据中各层级的数据结构内的取值,所述目标数据的数据格式为json;

46、确定模块,用于基于所述键数组和所述值数组,确定所述目标数据中各层级的数据结构和各数据结构内的取值,以对所述目标数据进行还原,得到所述目标数据的还原结果。

47、一种可能的实施方式中,所述获取模块,在获取对目标数据进行压缩后得到的键数组和值数组时,用于:

48、向服务器发送与所述还原指令对应的数据获取请求;

49、接收所述服务器发送的所述目标数据的键数组和值数组。

50、一种可能的实施方式中,所述值数组、键数组以及所述键数组的键数组索引存储在第一存储空间中,所述值数组与所述值数组对应的键数组的键数组索引对应存储;所述键数组在读取到第二存储空间之后,在所述第二存储空间中缓存;

51、所述获取模块,在获取对目标数据进行压缩后得到的键数组和值数组时,用于:

52、基于所述还原指令携带的所述目标数据的数据索引,从所述第一存储空间中获取与所述数据索引对应的值数组,以及对应存储的键数组索引;

53、基于所述对应存储的键数组索引,从所述第二存储空间中查找是否缓存有对应的键数组;

54、若是,则直接从所述第二存储空间中读取对应的键数组;

55、若否,则从所述第一存储空间中读取对应的键数组。

56、一种可能的实施方式中,所述确定模块,在基于所述键数组和所述值数组,确定所述目标数据中各层级的数据结构和各数据结构内的取值时,用于:

57、针对任一层级,基于所述键数组确定该层级对应的第一键数组;

58、判断该层级对应的第一键数组是否为空数组或者不存在;

59、若是,则确定该层级的数据结构为数组,并将所述值数组中该层级对应的第一值数组作为该层级的数组的取值。

60、一种可能的实施方式中,在该层级对应的第一键数组不为空数组或者不存在的情况下,所述确定模块,还用于:

61、确定该层级的目标数据结构;

62、基于与所述目标数据结构对应的确定方法,确定该层级的数据结构内的取值。

63、一种可能的实施方式中,所述确定模块,在确定该层级的目标数据结构时,用于:

64、在所述第一键数组中数组元素仅有一个,且该数组元素的数据类型为数组的情况下,确定该层级的目标数据结构为数组;

65、否则,确定该层级的目标数据结构为对象。

66、一种可能的实施方式中,所述确定模块,在基于与所述目标数据结构对应的确定方法,确定该层级的数据结构内的取值时,用于:

67、在所述目标数据结构为数组的情况下,确定该层级的各数组元素对应的层级的取值;

68、基于各数组元素对应的层级的取值,确定该层级的数组的取值。

69、一种可能的实施方式中,所述确定模块,在基于与所述目标数据结构对应的确定方法,确定该层级的数据结构内的取值时,用于:

70、在所述目标数据结构为对象的情况下,基于所述第一键数组中各键的下标,确定该层级对应的第一值数组中分别与该层级的键下标匹配的值;

71、基于该层级的各键和与各键下标匹配的值,确定该层级的对象的取值。

72、一种可能的实施方式中,所述确定模块,在基于所述第一键数组中各键的下标,确定该层级对应的第一值数组中分别与该层级的键下标匹配的值时,用于:

73、针对该层级的任一键,在所述第一键数组中存在该键对应的第二键数组的情况下,基于该键的下标,确定所述值数组中与所述第二键数组对应的第二值数组,并基于所述第二值数组,以及所述第二键数组,确定该键下子层级的取值;

74、将所述子层级的取值作为与该键下标匹配的值。

75、一种可能的实施方式中,该装置还包括压缩模块,所述压缩模块还用于根据以下方法对所述目标数据进行压缩,以确定所述键数组:

76、针对任一层级,确定该层级对应的数据结构;

77、基于各层级之间的嵌套关系、以及与该层级对应的数据结构匹配的键确定方法,确定该层级对应的第一键数组;

78、基于各层级对应的第一键数组,确定所述键数组。

79、一种可能的实施方式中,在任一层级对应的数据结构为对象的情况下,所述压缩模块,在基于各层级之间的嵌套关系、以及与该层级对应的数据结构匹配的键确定方法,确定该层级对应的第一键数组时,用于:

80、在该层级有对应的子层级的情况下,遍历该层级对应的所有子层级,确定所述所有子层级的第二键数组;基于所述第二键数组、以及该层级的键,确定该层级对应的第一键数组;

81、在任一层级对应的数据结构为数组的情况下,所述压缩模块,在基于各层级之间的嵌套关系、以及与该层级对应的数据结构匹配的键确定方法,确定该层级对应的第一键数组时,用于:

82、在该层级的数组元素对应有子层级的情况下,遍历各数组元素对应的子层级,确定各数组元素的第三键数组;将属于同一数组的数组元素的第三键数组进行合并处理,并基于合并处理后的第三键数组,确定该层级对应的第一键数组。

83、一种可能的实施方式中,所述压缩模块还用于根据以下方法对所述目标数据进行压缩,以确定所述值数组:

84、针对数据结构为对象的任一层级中的任一键,确定该键是否存在对应的值;若否,确定该键对应的值不存在;若是,在该键下不存在子层级的情况下,直接基于该层级的键值对的取值确定该键对应的值;以及,在该键下存在子层级的情况下,确定与该键下的子层级对应的第二值数组,并基于该键下的子层级对应的第二值数组,确定该键对应的值;基于该层级中各个键对应的值,确定该层级对应的第一值数组;基于各层级对应的第一值数组、以及各个层级之间的嵌套关系,确定所述值数组;

85、针对数据结构为数组的任一层级,确定该层级对应的第一键数组是否为空数组或者不存在;若是,将所述目标数据中该层级的数组作为该层级对应的第一值数组;若否,确定所述目标数据中该层级的各个数组元素对应的第三值数组,并基于所述各个数组元素对应的第三值数组,确定该层级对应的第一值数组;基于各层级对应的第一值数组、以及各层级之间的嵌套关系,生成值数组。

86、第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

87、第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

88、本公开实施例提供的数据还原方法、装置、计算机设备及存储介质,可以响应于针对目标数据的还原指令,获取对目标数据进行压缩后得到的键数组和值数组;其中,所述键数组用于表征所述目标数据中各层级的数据结构,所述键数组中包括所述目标数据的各键值对的键,所述值数组用于表征所述目标数据中各层级的数据结构内的取值,所述目标数据的数据格式为json;然后基于所述键数组和所述值数组,确定所述目标数据中各层级的数据结构和各数据结构内的取值,以对所述目标数据进行还原,得到所述目标数据的还原结果。这里,由于目标数据是以键数组和值数组分别进行存储的,并且键数组表征了所述目标数据中各层级的数据结构,因此,对于具有相同数据结构的多个目标数据(如商品页中的多个商品数据、联系人页中的多个联系人数据等),同一键数组可以用于还原多个目标数据,从而在传输、读写、或存储多个目标数据时,只需要传输、读写或存储各自的值数组和同一键数组,即可以根据各自的值数组和同一键数组,还原出完整的目标数据的还原结果,因此,采用这种方法,极大地压缩了传输数据和存储数据时的数据大小,从而提升了数据传输、数据读写的效率,并降低了数据存储所需的存储空间。

89、为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1