本发明提供了一种数据自适应解析方法及装置,属于数据处理技术领域。
背景技术:
在数据处理业务中经常遇到如下一种业务状况:上游的业务数据收集模块按照一定格式收集数据,传给下游的数据处理模块。此时下游的数据处理模块必须要能识别上游传递过来的数据格式,才能做处理、转换、计算等操作。那么下游模块如何正确识别传递来的数据格式,就成为一个关键问题。现有的技术方案主要是:在上游业务模块和下游的数据处理模块共用一个公有的数据结构,在代码层面硬编码数据格式。
但该现有技术的最大缺点就是扩展性和灵活性较差。比如一旦要多添加一个数据项,将是一件非常困难的事情,需要重新修改代码,耗时耗力。
技术实现要素:
本发明为解决现有的数据处理技术中存在的识别上游模块传递的数据格式的扩展性和灵活性较差的问题。为此,本发明提供了一种数据自适应解析方法及装置。
一种数据自适应解析方法,包括:
通过特定的文本文件描述各项数据在内存中的排列位置,获得内存结构动态描述文件;
根据输入文件结构中的项名在所述内存结构动态描述文件中的位置查找对应的项,并将查找到的项对应的数据填充到内存块的对应字节处。
一种数据自适应解析方法装置,包括:
动态描述文件建立单元,用于通过特定的文本文件描述各项数据在内存中的排列位置,获得内存结构动态描述文件;
动态读取转换单元,用于根据输入文件结构中的项名在所述内存结构动态描述文件中的位置查找对应的项,并将查找到的项对应的数据填充到内存块的对应字节处。
由上述本发明提供的技术方案可以看出,通过建立内存结构动态描述文件,在读取输入文件时,根据输入文件的结构在内存结构动态描述文件中对应的项,将查找到的项对应的数据填充到内存块的对应字节处,从而实现了数据格式做改动时只需要修改配置文件,而不必修改代码,系统即可根据配置文件来动态识别数据格式,提高了系统的扩展性和灵活性。
附图说明
图1是本发明具体实施方式提供的根据配置文件来动态识别数据格式的总图结构示意图;
图2是本发明具体实施方式提供的数据自适应解析方法的流程示意图;
图3是本发明具体实施方式提供的数据自适应解析装置的结构示意图。
具体实施方式
本发明具体实施方式提供了一种数据自适应解析方法,包括通过特定的文本文件描述各项数据在内存中的排列位置,获得内存结构动态描述文件;根据输入文件结构中的项名在所述内存结构动态描述文件中的位置查找对应的项,并将查找到的项对应的数据填充到内存块的对应字节处。本具体实施方式本方案分别用相应的配置文件来描述输入文件结构、内存结构和输出文件结构,从而实现了在数据格式做动改动的时候只需要修改配置文件,而不必修改代码,系统可以根据配置文件来动态识别数据格式做处理,总体结构如图1所示,包括了内存块的动态描述和动态读取转换。下面结合说明书附图对本具体实施方式作具体说明,如图2所示,相应的数据自适应解析方法包括:
步骤21,通过特定的文本文件描述各项数据在内存中的排列位置,获得内存结构动态描述文件。
具体的,在动态解析数据的过程中,首先需要将内存结构进行动态描述,本具体实施方式采用了xml格式的文件进行描述,分别用input.xml、mem.xml和output.xml三个配置文件来描述输入文件结构、内存结构和输出文件结构。另外,如json等格式的文本文件也适用于本具体实施方式。具体的描述格式如下:
Mem.xml描述了各项在内存中的排列位置。主要包含以下信息:
每一项可以包括:项名name,类型type,内存项的大小size,具体如下表所示:
根据mem.xml描述,计算出每一项在内存中的位置。计算方式如下:
步骤22,根据输入文件结构中的项名在所述内存结构动态描述文件中的位置查找对应的项,并将查找到的项对应的数据填充到内存块的对应字节处。
具体的,动态读取转换的过程包括由input.xml描述的输入文件转换为由mem.xml描述的内存结构,根据input.xml输入配置文件。若输入为文本文件,则配置文件可以设置如下:
第一部分
第二部分
上述配置文件中的第一部分为输入配置文件input.xml,第二部分为内存结构文件 mem.xml。该配置文件说明了输入文件每行共有3项,每项之间用’\t’分隔,并且第三项 cookie项会扩展出5项:age、scene、country、province和city。其中输入文件中的第二项“ver”在mem.xml中没有对应的项,将被丢弃。下面再详细描述转换步骤:
步骤31,每次读入一行,根据配置文件的分隔符分割得到各项;
步骤32,对于每一项,根据input.xml文件中的项名在mem.xml文件中查找对应的项,若找到则转入步骤33,若未找到,则转入步骤34;
步骤33,假设该项对应于mem.xml的第i项,则将该项填充到内存块的offset(i)字节处;
步骤34,如果找不到该项,且ext=0说明该输入项不用处理,扔弃,否则转入步骤 35;
步骤35,调用回调method函数,该函数的输出输出为字符串str。则根据对应的扩展项的分隔符来分割str.转入步骤36;
步骤36,对于 扩展的每一项,根据项名在mem.xml文件中查找对应项,若找到则转入步骤33,若找不到则扔弃。
采用本具体实施方式提供的技术方案,通过建立内存结构动态描述文件,在读取输入文件时,根据输入文件的结构在内存结构动态描述文件中对应的项,将查找到的项对应的数据填充到内存块的对应字节处,从而实现了数据格式做改动时只需要修改配置文件,而不必修改代码,系统即可根据配置文件来动态识别数据格式,提高了系统的扩展性和灵活性。
本发明的具体实施方式还提供了一种数据自适应解析方法装置,如图3所示,具体可以包括:
动态描述文件建立单元31,用于通过特定的文本文件描述各项数据在内存中的排列位置,获得内存结构动态描述文件;
动态读取转换单元32,用于根据输入文件结构中的项名在所述内存结构动态描述文件中的位置查找对应的项,并将查找到的项对应的数据填充到内存块的对应字节处。
可选的,在动态描述文件建立单元31中,特定的文本文件包括xml格式文件或json 格式文件。
可选的,在动态描述文件建立单元31中,描述的每一项数据包括项名、类型和内存项的大小。
可选的,在动态读取转换单元32中可以包括数据分割子单元和动态转换子单元,数据分割子单元,用于若没有在所述内存结构动态描述文件中的位置查找到对应的项,则调用回调method函数,根据对应的扩展项的分隔符来分割该项数据;动态转换子单元,用于对于 所述分割该项数据的每一项,根据项名在所述内存结构动态描述文件中查找对应的项。
上述数据自适应解析方法装置中包含的各单元的处理功能的实施方式在之前的方法具体实施方式中已经描述,在此不再重复描述。
采用本实施例提供的技术方案,通过建立内存结构动态描述文件,在读取输入文件时,根据输入文件的结构在内存结构动态描述文件中对应的项,将查找到的项对应的数据填充到内存块的对应字节处,从而实现了数据格式做改动时只需要修改配置文件,而不必修改代码,系统即可根据配置文件来动态识别数据格式,提高了系统的扩展性和灵活性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。