数据解析方法、装置、设备及存储介质与流程

文档序号:18797360发布日期:2019-09-29 19:53阅读:173来源:国知局
数据解析方法、装置、设备及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种数据解析方法、装置、设备及存储介质。



背景技术:

在网络通信过程中需要传输数据,不同设备能够处理的数据的格式不同。因此,需要对数据进行数据解析。现有数据解析方法的解析效率较低。



技术实现要素:

本发明实施例提供一种数据解析方法及装置,以至少解决现有技术中的以上技术问题。

第一方面,本发明实施例提供了一种数据解析方法,包括:

接收数据源;

对所述数据源进行数据源解析、样式解析及布局解析;

基于所述数据源的表达式语法生成抽象语法树;

基于所述抽象语法树递归进行主模板解析,利用所述数据源解析、样式解析及布局解析的结果对所述主模板中的值、样式及布局进行替换。

在一种实施方式中,对所述数据源进行数据源解析,包括:

将所述数据源中的元数据及自定义样式常量解析到全局上下文对象中。

在一种实施方式中,对所述数据源进行数据源解析,还包括以下至少一项:

对所述数据源进行数据格式整理或语法校验;

提取所述数据源中的元数据及自定义样式常量;

对所述数据源进行属性格式校验或句法校验。

在一种实施方式中,对所述数据源进行样式解析,包括以下至少一项:

对自定义样式进行属性格式校验或句法校验;

对自定义样式进行非有向无环图环状继承校验;

校验所述自定义样式所继承的样式或自定义常量是否存在。

在一种实施方式中,对所述数据源进行布局解析,包括以下至少一项:

对自定义布局进行属性格式校验或句法校验;

对自定义布局进行非有向无环图环状引用校验;

校验所述自定义布局所引用的组件或自定义常量是否存在。

在一种实施方式中,还包括:

缓存所述解析的结果;

对所述解析的结果进行渲染。

第二方面,本发明实施例提供了一种数据解析装置,包括:

接收模块,用于接收数据源;

第一解析模块,用于对所述数据源进行数据源解析、样式解析及布局解析;

第二解析模块,用于基于所述数据源的表达式语法生成抽象语法树;基于所述抽象语法树递归进行主模板解析,利用所述数据源解析、样式解析及布局解析的结果对所述主模板中的值、样式及布局进行替换。

在一种实施方式中,所述第一解析模块包括:

数据源解析子模块,用于将所述数据源中的元数据及自定义样式常量解析到全局上下文对象中。

在一种实施方式中,所述数据源解析子模块还用于,对所述数据源进行数据格式整理或语法校验;提取所述数据源中的元数据及自定义样式常量;对所述数据源进行属性格式校验或句法校验。

在一种实施方式中,所述第一解析模块包括:

样式解析子模块,用于对自定义样式进行属性格式校验或句法校验;对自定义样式进行非有向无环图环状继承校验;校验所述自定义样式所继承的样式或自定义常量是否存在。

在一种实施方式中,所述第一解析模块包括:

布局解析子模块,用于对自定义布局进行属性格式校验或句法校验;对自定义布局进行非有向无环图环状引用校验;校验所述自定义布局所引用的组件或自定义常量是否存在。

在一种实施方式中,还包括:

缓存模块,用于缓存所述解析的结果;

渲染模块,用于对所述解析的结果进行渲染。

第三方面,本发明实施例提供了一种数据解析设备,所述设备的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,所述设备的结构中包括处理器和存储器,所述存储器用于存储支持所述设备执行上述数据解析方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述设备还可以包括通信接口,用于与其他设备或通信网络通信。

第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储数据解析设备所用的计算机软件指令,其包括用于执行上述数据解析方法所涉及的程序。

上述技术方案中的一个技术方案具有如下优点或有益效果:

本发明实施例对数据源进行分阶段解析,能够提高数据解析的效率。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1为本发明实施例的一种数据解析方法实现流程图;

图2为本发明实施例的一种数据解析方法的应用场景示意图;

图3为本发明实施例的一种数据解析装置结构示意图一;

图4为本发明实施例的一种数据解析装置结构示意图二;

图5为本发明实施例的一种数据解析设备结构示意图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

本发明实施例主要提供了数据解析方法和装置,下面分别通过以下实施例进行技术方案的展开描述。

如图1为本发明实施例的一种数据解析方法实现流程图,包括:

s11:接收数据源;

s12:对所述数据源进行数据源解析、样式解析及布局解析;

s13:基于所述数据源的表达式语法生成抽象语法树;

s14:基于所述抽象语法树递归进行主模板解析,利用所述数据源解析、样式解析及布局解析的结果对所述主模板中的值、样式及布局进行替换。

本发明实施例可以首先将元数据(metadata)、样式常量以及自定义的样式和布局解析到全局上下文对象(ctx)中,最后在解析主模板(maintemplate)时可以直接进行值、样式、自定义布局的替换。

在一种可能的实施方式中,步骤s12中所述数据源进行数据源解析,包括:将所述数据源中的元数据及自定义样式常量解析到全局上下文对象中。

所述数据源进行数据源解析,还包括以下至少一项:

对所述数据源进行数据格式整理或语法校验;

提取所述数据源中的元数据及自定义样式常量;

对所述数据源进行属性格式校验或句法校验。

对所述数据源进行样式解析,包括以下至少一项:

对自定义样式进行属性格式校验或句法校验;

对自定义样式进行非有向无环图环状继承校验;

校验所述自定义样式所继承的样式或自定义常量是否存在。

对所述数据源进行布局解析,包括以下至少一项:

对自定义布局进行属性格式校验或句法校验;

对自定义布局进行非有向无环图环状引用校验;

校验所述自定义布局所引用的组件或自定义常量是否存在。

在一种实施方式中,上述数据源解析的功能包括:

1)数据格式的整理/语法校验;

2)提取数据源中的样式常量及用户自定义的资源(resource)常量中的样式常量;

3)校验属性格式;

4)句法(syntax)校验,出错时给出提示。

在一种实施方式中,上述样式(style)解析的功能包括:

1)支持用户自定义style块,用户可以在自定义的布局(layout)或者主模板中引用;

2)支持style的属性继承和覆盖;

3)支持在style中引用自定义的resource常量;

4)检测style继承关系,剔除非有向无环图(dag,directedacyclicgraph)环状的继承关系;

5)句法校验,出错时给出提示。

在一种实施方式中,上述布局(layout)解析的功能包括:

1)支持用户自定义layout子组件,用户可以在主模板中引用自定义的组件,自定义组件之间也可以嵌套引用;

2)自定义组件支持参数传递;

3)不同子组件嵌套引用(类似继承关系)支持参数结构解析;

4)检测组件引用关系,剔除非dag环状的引用关系;

5)句法校验,出错时给出提示。

在一种实施方式中,上述主模板解析阶段的功能包括:

1)解析递归主模板;

2)解析时替换自定义的样式、样式常量、数据源、自定义的布局,处理参数传递关系;

3)转换组件的样式属性,校验样式是否是当前组件的属性,检测属性值是否合法;

4)支持用户使用链式语法表达式;

5)生成抽象语法树(ast,abstractsyntaxtree)并进行语法递归解析。

在生成ast时,需要解析语法表达式,支持常见的操作符和运算符,提供灵活的表达式运算与字符串操作。常见的运算符举例如下:

1.算术运算:+,-,*,/,%,^

2.关系运算符:>,>=,<,<=

3.逻辑运算:!,&&,||

4.位运算符:<<,>>,~,|,^,&

5.点取值/条件运算/括号:.,?,(,)

另外,支持链式语法表达式。

针对表达式语法可以生成ast,语法树包含了操作符与操作参数的层级关系。基于生成的ast,自上而下递归遍历,获取操作符与操作参数,最后通过操作符对应的处理函数解析出结果。

在上述样式解析及布局解析中,本发明实施例可以支持非dag环的校验,以避免出现因环状继承或引用导致的无限循环,从而正确解析,避免导致递归函数栈溢出异常。

在校验非dag环时,本发明实施例可以采用以下方式:

当检测到节点包含子节点时,标记当前节点。例如,将当前节点标记为p节点。递归遍历p节点的子节点,当子节点还有子节点时,再次标记当前节点为p节点;对于没有子节点的节点则标记为c节点,并且结束整条继承链路的递归遍历。

这样,对于a–>b–>c这样正常的继承关系,得到的标记路径为:{a:p}–>{a:p,b:p}–>{a:p,b:p,c:c},这是一次正常的解析过程。

对于环状继承关系,例如a–>b–>c–>a,解析继承关系得到的标记路径为:{a:p}–>{a:p,b:p}–>{a:p,b:p,c:p}–>{a:p,b:p,c:p,a:p}。判断异常的条件是:当当前节点标记为p节点时,会检测之前这个节点的标记,该节点已经存在p标记,则表示存在环状关系,结束递归,向上报错。

在一种可能的实施方式中,在解析数据源、样式常量、自定义style、自定义layout,以及进行主模版渲染时,均有可能报错。当时出现错误出现时,本发明实施例可以提示错误信息提示,以辅助调试修正。

其中,在解析数据元或样式常量时,可能报错的情况有:数据结构不正确。

在解析style时,可能报错的情况有:属性格式不正确、存在非dag环状继承、引用的resource值不存在、继承的子style不存在。

在解析layout时,可能报错的情况有:属性格式不正确、存在非dag环状引用、引用的resource不存在、引用的style不存在、语法表达式解析失败、自定义layout参数解析错误。

在解析主模版时,可能报错的情况有:属性格式不正确、引用的style不存在、引用的属性常量不存在、引用的layout不存在、语法表达式解析失败、源数据引用格式不正确。

后续考虑性能问题,经过上述解析之后,可以缓存所述解析的结果。在处理相同数据时可以直接返回缓存的内容。

本发明实施例还可以对解析的结果进行渲染,将解析的结果转换成另一种数据格式。例如,可以将解析的结果转换成便于语音交互设备展现的格式。

图2为本发明实施例的一种数据解析方法的应用场景示意图,在图所示的系统中,包括:

bot(聊天机器人对话系统)服务器、服务器侧渲染(ssr,serversiderender)服务器和终端设备。其中,ssr服务器上可以设置解析器(parser)。当bot服务器通过对话式人工智能(ai,artificialintelligence)平台向ssr服务器发送源数据(例如源json数据)后,ssr服务器上的解析器可以对收到的源数据进行解析,对解析后的数据进行缓存。

针对解析器的解析结果,ssr服务器将其转换为类似超文本标记语言(html,hypertextmarkuplanguage)的形式,方便终端设备执行展现。上述终端设备可以为带屏语音交互设备。

可见,上述系统中,由设置在bot服务器和终端设备之间的ssr服务器分担了数据解析功能,能够便于终端设备快速展现数据对应的用户界面内容,降低对终端设备处理能力的要求。并且,由服务端进行解析和渲染,可以提高系统的整体性能。

本发明实施例还提出一种数据解析装置。参见图3,图3为本发明实施例的一种数据解析装置结构示意图一,包括:

接收模块310,用于接收数据源;

第一解析模块320,用于对所述数据源进行数据源解析、样式解析及布局解析;

第二解析模块330,用于基于所述数据源的表达式语法生成抽象语法树;基于所述抽象语法树递归进行主模板解析,利用所述数据源解析、样式解析及布局解析的结果对所述主模板中的值、样式及布局进行替换。

图4为本发明实施例的一种数据解析装置结构示意图二,包括:

接收模块310、第一解析模块320及第二解析模块330,其中第一解析模块320包括:

数据源解析子模块321,用于将所述数据源中的元数据及自定义样式常量解析到全局上下文对象中。

在一种可能的实施方式中,所述数据源解析子模块321还用于,对所述数据源进行数据格式整理或语法校验;提取所述数据源中的元数据及自定义样式常量;对所述数据源进行属性格式校验或句法校验。

在一种可能的实施方式中,如图4所示,第一解析模块320包括:

样式解析子模块322,用于对自定义样式进行属性格式校验或句法校验;对自定义样式进行非有向无环图环状继承校验;校验所述自定义样式所继承的样式或自定义常量是否存在。

第一解析模块320还可以包括:

布局解析子模块323,用于对自定义布局进行属性格式校验或句法校验;对自定义布局进行非有向无环图环状引用校验;校验所述自定义布局所引用的组件或自定义常量是否存在。

上述装置还可以进一步包括:

缓存模块440,用于缓存所述解析的结果;

渲染模块450,用于对所述解析的结果进行渲染。

本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。

本发明实施例还提出一种数据解析设备,如图5为本发明实施例的数据解析设备结构示意图,包括:

存储器11和处理器12,存储器11存储有可在处理器12上运行的计算机程序。所述处理器12执行所述计算机程序时实现上述实施例中的数据解析方法。所述存储器11和处理器12的数量可以为一个或多个。

所述设备还可以包括:

通信接口13,用于与外界设备进行通信,进行数据交换传输。

存储器11可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

如果存储器11、处理器12和通信接口13独立实现,则存储器11、处理器12和通信接口13可以通过总线相互连接并完成相互之间的通信。所述总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线,外部设备互连(pci,peripheralcomponentinterconnect)总线或扩展工业标准体系结构(eisa,extendedindustrystandardarchitecture)等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器11、处理器12和通信接口13集成在一块芯片上,则存储器11、处理器12和通信接口13可以通过内部接口完成相互间的通信。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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