本公开涉及计算机,尤其涉及一种数据解析方法、装置、电子设备及存储介质。
背景技术:
1、然而现有技术中,通常利用特定的数据解析工具对特定类型的数据进行解析,从而得到数据中的键值对信息。例如,可以使用jsonpath从json文档中抽取键值对信息,但却无法从程序日志中抽取出键值对信息。可见,在现有方法中,一种解析工具只能适配某一特定格式的数据,而对于其他格式的数据,通常需要重新改写解析程序来进行适配,因此通用性较差。
技术实现思路
1、本公开提供一种数据解析方法、装置、电子设备及存储介质,用以解决现有技术中数据解析工具通用性较差的问题。本公开的技术方案如下:
2、根据本公开实施例的第一方面,提供一种数据解析方法,方法包括:获取程序日志的待解析数据;待解析数据包括多个字符;遍历多个字符,并根据当前遍历到的当前字符、预设解析规则以及第一解析结果,针对第一解析结果执行当前解析操作,得到当前解析结果;预设解析规则包括预设字符类型与字符解析规则的映射关系;第一解析结果为在当前字符之前待解析数据的解析结果;第一解析结果包括已存储的键名信息,或者第一解析结果包括已存储的键名信息和数据值信息;当前解析操作包括是否将当前字符存储为键名信息或者是否将当前字符存储为数据值信息;当遍历完成后,根据当前解析结果得到待解析数据的至少一个键值对。
3、可选的,预设字符类型包括目标类型和非目标类型,目标类型为标点符号或者非标点符号;根据当前遍历到的当前字符、预设解析规则以及第一解析结果,针对第一解析结果执行当前解析操作,得到当前解析结果,包括:在当前字符为非目标类型的情况下,则在第一解析结果中将当前字符存储为键名信息或数据值信息,得到当前解析结果;在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果;预处理包括对第一解析结果的层级进行累加、删除第一解析结果中的预设层级、将第一解析结果中的数组角标确定为预设值、删除第一解析结果中预设层级的数值角标、修改第一解析结果的参数状态中的一个或多个。
4、可选的,第一解析结果还包括第一参数和第二参数,第一参数的初始状态以及第二参数的初始状态均为第一状态;第一参数用于指示在遍历到下一字符时按照预设累加值增加第一解析结果的数组角标;第二参数用于指示在遍历到下一字符时将下一字符存储为数据值信息。
5、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的左大括号的情况下,将第一解析结果的键名信息中当前键名的层级加1,将第二参数的状态设置为第一状态,若当前键名的层级包含元素序号信息且第一参数的状态为第二状态,则将元素序号信息进行累加,并将第一参数设置为第一状态,得到当前解析结果。
6、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的右大括号的情况下,删除第一解析结果的键名信息中当前键名的层级,若第二参数的状态为第二状态,则将第二参数的状态修改为第一状态。
7、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的左中括号的情况下,将第一解析结果的键名信息中当前键名的数组角标确定为预设初始值,并将第一参数以及第二参数的状态均修改为第二状态;数组角标用于表示当前键名在数组中的位置。
8、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的右中括号的情况下,删除第一解析结果的键名信息中当前键名的数组角标,若第二参数的状态为第二状态,则将第二参数的状态修改为第一状态。
9、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的逗号的情况下,将第一参数的状态设置为第二状态,若第一解析结果的键名信息中当前键名的层级不含数组角标,则删除当前键名的层级,并将第二参数的状态设置为第一状态。
10、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的等号的情况下,将第二参数的状态设置为第二状态。
11、可选的,在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果,包括:在当前字符为目标类型中的空格符的情况下,则跳过当前字符,解析当前字符的下一字符。
12、可选的,第一参数为数组角标累加操作参数,第二参数为数据值记录操作参数,第一状态为关闭状态,第二状态为开启状态;数组角标累加操作参数在开启状态,用于指示在遍历到下一字符时按照预设累加值增加第一解析结果的数组角标;数据值记录操作参数在开启状态用于指示在遍历到下一字符时将下一字符记录为数据值信息。
13、可选的,待解析数据包括:左大括号和右大括号之间包括的第一对象等于第二对象格式的数据,键值对中的键名信息用于表示键名路径。
14、根据本公开实施例的第二方面,提供一种数据解析装置,数据解析装置包括获取单元以及处理单元;获取单元,被配置为执行获取程序日志的待解析数据;待解析数据包括多个字符;多个字符用于存储键信息或者值信息;处理单元,被配置为执行遍历多个字符,并根据当前遍历到的当前字符、预设解析规则以及第一解析结果,针对第一解析结果执行当前解析操作,得到当前解析结果;预设解析规则包括预设字符类型与字符解析规则的映射关系;第一解析结果为在当前字符之前待解析数据的解析结果;第一解析结果包括已存储的键名信息,或者第一解析结果包括已存储的键名信息和数据值信息;当前解析操作包括是否将当前字符存储为键名信息或者是否将当前字符存储为数据值信息;处理单元,还被配置为执行当遍历完成后,根据当前解析结果得到待解析数据的至少一个键值对。
15、可选的,处理单元,具体被配置为执行:在当前字符为非目标类型的情况下,则在第一解析结果中将当前字符存储为键名信息或数据值信息,得到当前解析结果;在当前字符为目标类型的情况下,则对第一解析结果进行预处理,得到当前解析结果;预处理包括对第一解析结果的层级进行累加、删除第一解析结果中的预设层级、将第一解析结果中的数组角标确定为预设值、删除第一解析结果中预设层级的数值角标、修改第一解析结果的参数状态中的一个或多个。
16、可选的,第一解析结果还包括第一参数和第二参数,第一参数的初始状态以及第二参数的初始状态均为第一状态;第一参数用于指示在遍历到下一字符时按照预设累加值增加第一解析结果的数组角标;第二参数用于指示在遍历到下一字符时将下一字符存储为数据值信息。
17、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的左大括号的情况下,将第一解析结果的键名信息中当前键名的层级加1,将第二参数的状态设置为第一状态,若当前键名的层级包含元素序号信息且第一参数的状态为第二状态,则将元素序号信息进行累加,并将第一参数设置为第一状态,得到当前解析结果。
18、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的右大括号的情况下,删除第一解析结果的键名信息中当前键名的层级,若第二参数的状态为第二状态,则将第二参数的状态修改为第一状态。
19、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的左中括号的情况下,将第一解析结果的键名信息中当前键名的数组角标确定为预设初始值,并将第一参数以及第二参数的状态均修改为第二状态;数组角标用于表示当前键名在数组中的位置。
20、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的右中括号的情况下,删除第一解析结果的键名信息中当前键名的数组角标,若第二参数的状态为第二状态,则将第二参数的状态修改为第一状态。
21、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的逗号的情况下,将第一参数的状态设置为第二状态,若第一解析结果的键名信息中当前键名的层级不含数组角标,则删除当前键名的层级,并将第二参数的状态设置为第一状态。
22、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的等号的情况下,将第二参数的状态设置为第二状态。
23、可选的,处理单元,具体被配置为执行:在当前字符为目标类型中的空格符的情况下,则跳过当前字符,解析当前字符的下一字符。
24、可选的,第一参数为数组角标累加操作参数,第二参数为数据值记录操作参数,第一状态为关闭状态,第二状态为开启状态;数组角标累加操作参数在开启状态,用于指示在遍历到下一字符时按照预设累加值增加第一解析结果的数组角标;数据值记录操作参数在开启状态用于指示在遍历到下一字符时将下一字符记录为数据值信息。
25、可选的,待解析数据包括:左大括号和右大括号之间包括的第一对象等于第二对象格式的数据,键值对中的键名信息用于表示键名路径。
26、根据本公开实施例的第三方面,提供一种电子设备,包括:处理器、用于存储处理器可执行的指令的存储器;其中,处理器被配置为执行指令,以实现上述第一方面的数据解析方法。
27、根据本公开实施例的第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述第一方面的数据解析方法。
28、根据本公开实施例的第五方面,提供一种计算机程序产品,计算机程序产品包括计算机指令,当计算机指令被处理器执行时,实现如上述第一方面的数据解析方法。
29、本公开提供的技术方案至少带来以下有益效果:数据解析装置获取包括多个字符的待解析数据。进一步的,数据解析装置遍历多个字符,并根据当前遍历到的当前字符、预设解析规则以及第一解析结果,针对第一解析结果执行当前解析操作,得到当前解析结果。由于预设解析规则包括预设字符类型与字符解析规则的映射关系;第一解析结果为在当前字符之前待解析数据的解析结果;第一解析结果包括已存储的键名信息,或者第一解析结果包括已存储的键名信息和数据值信息;当前解析操作包括是否将当前字符存储为键名信息或数据值信息,因此当遍历完成后,数据解析装置可以根据当前解析结果得到待解析数据的至少一个键值对。相较于相关技术中解析工具通用性较差的问题,本技术不再受限于解析工具的限制,通过遍历以及预设解析规则,可以成功从程序日志中抽取出键值对信息,进而提升了解析方法的通用性。
30、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。