掌桥专利:专业的专利平台
掌桥专利
首页

一种文件转化方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 11:22:42


一种文件转化方法、装置、电子设备及存储介质

技术领域

本发明涉及文件转化技术领域,尤其涉及一种文件转化方法、装置、电子设备及存储介质。

背景技术

Protobuf是一种数据序列化框架,能应用于多种开发语言和平台,具有良好的可扩展性。Protobuf的序列化和反序列化速度比XML、JSON快很多,而且序列化结果体积要比XML、JSON小很多,很适合用于前后端数据通讯。

小程序的逻辑层的执行环境通常使用的是Javascript代码。同时,基于安全考虑,小程序不支持动态执行Javascript。目前在Javascript中使用Protobuf作为数据通讯格式主要是通过把.proto文件转换成静态Javascript文件的方式来实现。

然而,目前小程序的大小有以下限制:整个小程序所有分包大小不超过16M;单个分包/主包大小不能超过2M。而把.proto文件转换成静态的Javascript文件的方式,需要将.proto文件里面定义的每个数据结构及其属性转换成Javascript类及属性,同时每个类里面还需要有对应的序列化和反序列化方法,这样转换后的Javascript文件比较大,这样一来会导致小程序包体比较大,小程序新版本下载和安装速度比较慢,并且受限于小程序主包不能超过2M,也无法添加更多功能。

发明内容

本发明提供了一种文件转化方法、装置、电子设备及存储介质,用于解决现有小程序包体较大,小程序新版本下载和安装速度较慢,且无法添加较多功能的技术问题。

本发明提供了一种文件转化方法,包括:

获取待转换数据结构文件,并从所述待转换数据结构文件中提取数据结构;

生成所述数据结构的映射数据;

将所述数据结构转换为预设接口;

生成所述预设接口的常量枚举;

基于所述映射数据、所述预设接口和所述常量枚举编译得到目标文件。

可选地,所述生成所述数据结构的映射数据的步骤,包括:

将所述数据结构转化为预设文件;

生成所述预设文件的映射数据。

可选地,所述生成所述预设接口的常量枚举的步骤,包括:

从所述待转换数据结构文件中提取常量;

采用所述常量生成所述预设接口的常量枚举。

可选地,所述映射数据包括:

数据结构名称、属性名、属性类型和编号。

本发明还提供了一种文件转化装置,包括:

数据结构提取模块,获取待转换数据结构文件,并从所述待转换数据结构文件中提取数据结构;

映射数据生成模块,用于生成所述数据结构的映射数据;

接口转换模块,用于将所述数据结构转换为预设接口;

常量枚举生成模块,用于生成所述预设接口的常量枚举;

目标文件生成模块,用于基于所述映射数据、所述预设接口和所述常量枚举编译得到目标文件。

可选地,所述映射数据生成模块,包括:

预设文件生成子模块,用于将所述数据结构转化为预设文件;

映射数据生成子模块,用于生成所述预设文件的映射数据。

可选地,所述常量枚举生成模块,包括:

常量提取子模块,用于从所述待转换数据结构文件中提取常量;

常量枚举生成子模块,用于采用所述常量生成所述预设接口的常量枚举。

可选地,所述映射数据包括:

数据结构名称、属性名、属性类型和编号。

本发明还提供了一种电子设备,所述设备包括处理器以及存储器:

所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;

所述处理器用于根据所述程序代码中的指令执行如上任一项所述的文件转化方法。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码用于执行如上任一项所述的文件转化方法。

从以上技术方案可以看出,本发明具有以下优点:本发明通过获取待转换数据结构文件,并从待转换数据结构文件中提取数据结构;生成数据结构的映射数据;将数据结构转换为预设接口;生成预设接口的常量枚举;基于映射数据、预设接口和常量枚举编译得到目标文件。从而减小小程序的安装包大小,提高小程序新版本的下载和安装速度;并且,在程序安装包大小受限的情况下,能添加更多的功能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的一种文件转化方法的步骤流程图;

图2为本发明另一实施例提供的一种文件转化方法的步骤流程图;

图3为Protobuf序列化后生成的二进制数据结构;

图4为本发明实施例提供的一种文件转化装置的结构框图。

具体实施方式

本发明实施例提供了一种文件转化方法、装置、电子设备及存储介质,用于解决现有小程序包体较大,小程序新版本下载和安装速度较慢,且无法添加较多功能的技术问题。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,图1为本发明实施例提供的一种文件转化方法的步骤流程图。

本发明提供的一种文件转化方法,包括:

步骤101,获取待转换数据结构文件,并从待转换数据结构文件中提取数据结构;

步骤102,生成数据结构的映射数据;

在本发明实施例中,待转换数据结构文件可以为.proto文件。映射数据可以为Map映射数据。

本发明实施例可以把根据服务器和小程序通讯需要编写的.proto文件中定义的数据结构转换成Javascript文件,并通过Map映射保存起来。

Javascript是一门动态语言,有对象字面量属性{}来表示对象,可以不需要定义类就能使用类。比如使用baseReq={channelId:1,platform:2}就能使用baseReq对象。

步骤103,将数据结构转换为预设接口;

在实际应用中,使用Javascript来使用类,在编码过程会非常麻烦,不知道类有哪些属性。因此,在本发明实施例中,可以采用Typescript的接口Interface来定义属性。

Typescript是一种自由和开源的编程语言,其是Javascript的一个超集,扩展了Javascript的语法,为Javascript添加了强类型、类、接口等面向对象特征。在Typescript中,接口的作用就是为类型命名和为代码定义契约,不用实现类,也不会生成相应的Javascript代码。、

本发明实施例通过把数据结构转换为Typescript接口,而不用生成Javascript的方式,达到既能减少Javascript文件大小,又不影响程序员编码便利性的目的。

步骤104,生成预设接口的常量枚举;

枚举是组织收集有关联变量的一种常用方式,项目中.proto文件通常会包括很多枚举类型的变量。为了让程序员容易通过名字识别对应枚举的意义,通常枚举的名字都比较长,生成的Javascript文件也比较多。

有鉴于此,本发明实施例通过把.proto文件中的常量转换成Typescript的常量枚举,来进一步减少后续生成Javascript文件的大小。

步骤105,基于映射数据、预设接口和常量枚举编译得到目标文件。

在本发明实施例中,基于映射数据、预设接口和常量枚举,可以序列化得到目标文件。

本发明通过获取待转换数据结构文件,并从待转换数据结构文件中提取数据结构;生成数据结构的映射数据;将数据结构转换为预设接口;生成预设接口的常量枚举;基于映射数据、预设接口和常量枚举编译得到目标文件。从而减小小程序的安装包大小,提高小程序新版本的下载和安装速度;并且,在程序安装包大小受限的情况下,能添加更多的功能。

请参阅图2,图2为本发明另一实施例提供的一种文件转化方法的步骤流程图。具体可以包括以下步骤:

步骤201,获取待转换数据结构文件,并从待转换数据结构文件中提取数据结构;

步骤202,将数据结构转化为预设文件;

步骤203,生成预设文件的映射数据;

Protobuf序列化后会产生二进制数据,这些数据按照含义不同,可以划分为6个部分:最高有效位标志(MSB flag)、tag、编码后数据类型(wire type)、长度(length)、字段值(value)以及填充(padding)。其中,MSB用来表示是否结束位,tag用来表示message中属性的编号,具体结构如图3所示。

本发明实施例把根据服务器和小程序通讯需要编写的.proto文件中定义的数据结构转化为预设文件,如Javascript文件后通过Map映射保存起来,其中,Map里面保存了数据结构名称、属性名、属性类型及编号。从而在进行序列化和反序列化时,可以借助Map映射数据进行动态序列化和反序列化。

其中,.proto文件是Protobuf用来描述定义数据结构的文件。Protobuf是一种开源、跨平台的编程语言,类似于XML,能够将结构化数据序列化,可用于数据存储、通信协议等方面。

在一个示例中,以数据结构UU_BaseReq为例,其包含了channel_id和platform两个属性,其中channel_id为64位无符号整型数字uint64,platform为32位无符号整型数字uint32。则映射得到的Map里面的数据结构名为UU_BaseReq;属性名为channel_id和platform;属性类型为uint64和uint32;编号可以为1和2。

步骤204,将数据结构转换为预设接口;

本发明实施例通过把数据结构转换为Typescript接口,而不用生成Javascript的方式,达到既能减少Javascript文件大小,又不影响程序员编码便利性的目的。

步骤205,从待转换数据结构文件中提取常量;

步骤206,采用常量生成预设接口的常量枚举;

枚举是组织收集有关联变量的一种常用方式,项目中.proto文件通常会包括很多枚举类型的变量。为了让程序员容易通过名字识别对应枚举的意义,通常枚举的名字都比较长,生成的Javascript文件也比较多。

有鉴于此,本发明实施例通过把.proto文件中的常量转换成Typescript的常量枚举,来进一步减少后续生成Javascript文件的大小。

步骤207,基于映射数据、预设接口和常量枚举编译得到目标文件。

在本发明实施例中,基于映射数据、预设接口和常量枚举,可以得到目标文件。

通过本发明实施例,.proto文件中的每个数据结构都不用生成编码码方法,只需要将数据结构转换为map映射,同时结合typescript的interface接口特性,不用生成数据结构对应的javascript类和枚举属性。从而减小小程序的安装包大小,提高小程序新版本的下载和安装速度;并且,在程序安装包大小受限的情况下,能添加更多的功能。

请参阅图4,图4为本发明实施例提供的一种文件转化装置的结构框图。

本发明实施例提供了一种文件转化装置,包括:

数据结构提取模块401,获取待转换数据结构文件,并从待转换数据结构文件中提取数据结构;

映射数据生成模块402,用于生成数据结构的映射数据;

接口转换模块403,用于将数据结构转换为预设接口;

常量枚举生成模块404,用于生成预设接口的常量枚举;

目标文件生成模块405,用于基于映射数据、预设接口和常量枚举编译得到目标文件。

在本发明实施例中,映射数据生成模块402,包括:

预设文件生成子模块,用于将数据结构转化为预设文件;

映射数据生成子模块,用于生成预设文件的映射数据。

在本发明实施例中,常量枚举生成模块404,包括:

常量提取子模块,用于从待转换数据结构文件中提取常量;

常量枚举生成子模块,用于采用常量生成预设接口的常量枚举。

在本发明实施例中,映射数据包括:

数据结构名称、属性名、属性类型和编号。

本发明实施例还提供了一种电子设备,设备包括处理器以及存储器:

存储器用于存储程序代码,并将程序代码传输给处理器;

处理器用于根据程序代码中的指令执行本发明任一实施例的文件转化方法。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质用于存储程序代码,程序代码用于执行本发明任一实施例的文件转化方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 一种页面文件转化方法、装置、电子设备和存储介质
  • 一种内存优化的数据文件格式转化方法、装置及存储介质
技术分类

06120112901676