JSON字符串的处理方法及装置技术领域
本发明涉及数据存储领域,具体而言,涉及一种JSON字符串的处理方法及装置。
背景技术
目前,在对大数据进行存储时,通常会采用Impala等列存储引擎。对于具有多对
多关联的数据表,往往存在着在实体与实体之间的多对多关联。在上述具有多对多关
联的数据表进行查询时,表连接Shuffle开销比较大,查询性能不是很高。
为了提高列存储引擎的查询性能,可以将具有多对多关联的多条数据以JSON
(JavaScript Object Notation,JavaScript对象表示法)数据格式存储在一个字符
串当中,并存储于同一个字段内。由于多条数据存储于一个JSON格式的字符串中,当
需要对JSON字符串中的数据内容进行分析时,通常需要先对JSON字符串进行反序列
化处理后,再进行后续的分析处理,往往运行效率很低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种JSON字符串的处理方法及装置,以至少解决了在做聚合
处理时由于JSON的反序列化处理性能差导致的运行效率低的技术问题。
根据本发明实施例的一个方面,提供了一种JSON字符串的处理方法,包括:获取
待处理的JSON字符串;根据JSON字符串的第一格式规则对JSON字符串进行拆分,生
成字段集合;按照预先设置的聚合处理参数对字段集合中的字段进行聚合处理,确定
聚合指标。
进一步地,聚合处理参数至少包括:筛选参数和聚合参数,其中,按照预先设置
的聚合处理参数对字段集合中的字段进行聚合处理,确定聚合指标,包括:按照筛选
参数对字段集合进行筛选,生成待聚合字段集合;按照聚合参数对聚合字段集合进行
聚合处理,确定聚合指标。
进一步地,根据JSON字符串的第一格式规则对JSON字符串进行拆分,生成字段
集合,包括:确定第一格式规则中用于对JSON字符串中的多条信息进行分割的预设字
符;根据预设字符对JSON字符串进行拆分,生成字段集合。
进一步地,在根据JSON字符串的第一格式规则对JSON字符串进行拆分,生成字
段集合之后,方法还包括:获取预先设置的筛选条件,其中,筛选条件至少包括:关键
字;利用筛选条件对字段集合中的字段进行筛选,生成新字段集合。
进一步地,按照预先设置的聚合处理参数对字段进行聚合处理,确定与聚合处理
参数对应的聚合指标,包括:获取预先设置的聚合处理参数,其中,聚合处理参数至
少包括:求和参数、计数参数;根据聚合处理参数对字段集合中的字段进行聚合处理,
确定与聚合处理参数对应的聚合指标。
进一步地,在按照预先设置的聚合处理参数对字段进行聚合处理,确定聚合处理
参数对应的聚合指标之后,方法还包括:按照预先设置的第二格式规则对聚合指标进
行处理,生成聚合指标字符串。
进一步地,在按照预先设置的第二格式规则对聚合指标进行处理,生成聚合指标
字符串之前,方法还包括:按照预先设置的分析参数对聚合指标进行处理,得到新聚
合指标。
根据本发明实施例的另一方面,还提供了一种JSON字符串的处理装置,包括:第
一获取模块,用于获取待处理的JSON字符串;第一生成模块,用于根据JSON字符串
的第一格式规则对JSON字符串进行拆分,生成字段集合;确定模块,用于按照预先设
置的聚合处理参数对字段集合中的字段进行聚合处理,确定聚合指标。
进一步地,聚合处理参数至少包括:筛选参数和聚合参数,其中,确定模块包括:
子筛选模块,用于按照筛选参数对字段集合进行筛选,生成待聚合字段集合;子聚合
模块,用于按照聚合参数对聚合字段集合进行聚合处理,确定聚合指标。
进一步地,其特征在于,装置还包括:第三生成模块,用于按照预先设置的第二
格式规则对聚合指标进行处理,生成聚合指标字符串。
在本发明实施例中,采用获取待处理的JSON字符串;根据JSON字符串的第一格
式规则对JSON字符串进行拆分,生成字段集合;按照预先设置的聚合处理参数对字段
集合中的字段进行聚合处理,确定聚合指标的方式,达到了直接对JSON字符串中的数
据信息进行聚合处理的目的,从而实现了提高对JSON字符串的处理效率的技术效果,
进而解决了在做聚合处理时由于JSON的反序列化处理性能差导致的运行效率低的技
术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发
明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图
中:
图1是根据本发明实施例的一种JSON字符串的处理方法的流程图;
图2是根据本发明实施例的一种JSON字符串的处理装置的示意图;以及
图3是根据本发明实施例的一种可选的JSON字符串的处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的
附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例
仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领
域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于
本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是用于区别类似的对象,而不必用于描述预设的顺序或先后次序。应该理解这
样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在
这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的
任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方
法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚
地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种JSON字符串的处理方法实施例,需要说明的是,
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,
并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺
序执行所示出或描述的步骤。
图1是根据本发明实施例的JSON字符串的处理方法的流程图,如图1所示,该方
法包括如下步骤:
步骤S21,获取待处理的JSON字符串。
步骤S23,根据JSON字符串的第一格式规则对JSON字符串进行拆分,生成字段
集合。
步骤S25,按照预先设置的聚合处理参数对字段集合中的字段进行聚合处理,确
定聚合指标。
具体的,通过步骤S21至步骤S25,首先,将获取到的JSON字符串进行拆分处理,
拆分得到与JSON字符串对应的字段集合,从而根据字段确定JSON字符串中包含的多
条数据信息。然后,根据预先设置的聚合处理参数对字段集合中的数据信息进行聚合
处理,从而得到相应的聚合指标。
其中,在生成JSON字符串时,是按照固定的格式规则进行生成的,因此,可以通
过对JSON字符串中用于分割数据信息的预设字符进行识别,实现对JSON字符串进行
拆分,从而得到字段集合。
通过上述方法,达到了直接对JSON字符串中的数据信息进行聚合处理的目的,从
而实现了提高对JSON字符串的处理效率的技术效果,进而解决了在做聚合处理时由于
JSON的反序列化处理性能差导致的运行效率低的技术问题。
作为一种可选的实施方式,所述聚合处理参数至少包括:筛选参数和聚合参数,
其中,在步骤S25按照预先设置的聚合处理参数对所述字段集合中的字段进行聚合处
理,确定聚合指标中,可以包括:
步骤S251,按照所述筛选参数对所述字段集合进行筛选,生成待聚合字段集合。
步骤S253,按照所述聚合参数对所述聚合字段集合进行聚合处理,确定所述聚合
指标。
具体的,通过步骤S251至步骤S253,首先,利用筛选参数对字段集合中的字段
集合进行维度过滤,得到用于进行聚合处理的聚合字段集合。然后,利用聚合参数对
聚合字段集合中的字段信息进行聚合处理,从而最终得到聚合指标。
作为一种可选的实施方式,在步骤S23根据JSON字符串的第一格式规则对JSON
字符串进行拆分,生成字段集合中,可以包括:
步骤S231,确定第一格式规则中用于对JSON字符串中的多条信息进行分割的预
设字符。
步骤S233,根据预设字符对JSON字符串进行拆分,生成字段集合。
具体的,在步骤S231至步骤S233中,首先,根据用于生成JSON字符串的第一格
式规则,确定第一格式规则中用于对多条信息进行分割的预设字符。然后,利用预设
字符对JSON字符串进行拆分,得到JSON字符串中与各条信息对应的字段集合。
作为一种可选的实施方式,在步骤S23根据JSON字符串的第一格式规则对JSON
字符串进行拆分,生成字段集合之后,方法还可以包括:
步骤S241,获取预先设置的筛选条件,其中,筛选条件至少包括:关键字。
步骤S243,利用筛选条件对字段集合中的字段进行筛选,生成新字段集合。
通过步骤S241至步骤S243,在对JSON字符串进行拆分之后,可以先按照预先设
置的筛选条件对字段集合中的信息进行筛选,将不符合筛选条件的信息从字段集合中
去除掉,生成新字段集合。通过上述筛选,可以聚合处理时,提高对JSON字符串进行
处理的精确度。其中,筛选条件可以包括:关键字、时间等,可以根据实际需要进行
设置,此处不作限制。
作为一种可选的实施方式,在步骤S25按照预先设置的聚合处理参数对字段进行
聚合处理,确定与聚合处理参数对应的聚合指标中,包括:
步骤S251,获取预先设置的聚合处理参数,其中,聚合处理参数至少包括:求和
参数、计数参数。
步骤S253,根据聚合处理参数对字段集合中的字段进行聚合处理,确定与聚合处
理参数对应的聚合指标。
具体的,在步骤S251至步骤S253中,获取预先设置的至少一个聚合处理参数,
并分别利用各个聚合处理参数对字段集合中的各个字段进行相应的聚合处理,以最终
得到聚合指标。其中,聚合指标与聚合处理参数对应,并可以采用与记录聚合处理参
数的字符串相应的格式规则对其进行合并。
作为一种可选的实施方式,在步骤S25按照预先设置的聚合处理参数对字段进行
聚合处理,确定聚合处理参数对应的聚合指标之后,方法还可以包括:
步骤S27,按照预先设置的第二格式规则对聚合指标进行处理,生成聚合指标字
符串。
具体的,在经过不同的聚合处理,通常可以得到多个聚合指标。通过步骤S27,
对得到的多个聚合指标进行处理,从而生成一个聚合指标字符串,从而便于存储和读
取。
作为一种可选的实施方式,在实际应用当中,Json字符串的原生处理方法可以包
括如下步骤:
步骤1,按“{}”对Json字符串进行拆解,拆分得到每个PVObject对象对应的
子Json字符串。
步骤2,通过传入的筛选参数,找到需要的列的值,其中,子Json字符串中以“:”
为预设标识对各个列对应的值进行分割。
步骤3,通过传入的聚合处理参数确定所需要进行聚合处理的方式(如Count,Sum
等),遍历每个PVObject对应的列,依次对相应列做相应的聚合处理。
步骤4,经过聚合处理返回得到的所有的聚合指标,可再一次通过预设标识进行
字符串的拼接。
作为一种可选的实施方式,在步骤S27按照预先设置的第二格式规则对聚合指标
进行处理,生成聚合指标字符串之前,方法还包括:
步骤S26,按照预先设置的分析参数对聚合指标进行处理,生成新聚合指标。
具体的,通过聚合处理参数对字段进行处理,虽然可以得到聚合处理后的聚合指
标,有时并不能满足需求。因此,可以通过步骤S26,利用预先设置的分析参数对聚
合指标进行进一步的分析处理,得到新的聚合指标。
当然,还可以根据实际需要,利用分析参数对聚合指标以不同的处理方式进行多
次处理,此处不做具体限制。
作为一种可选的实施方式,在实际应用当中,用于通过AggregateMeasure函数可
以实现上述步骤的功能。
具体的,上述AggregateMeasure函数的函数格式可以被设计为:
String AggregateMeasure(string filter,string measure);
其中,函数名为AggregateMeasure,意为聚合指标,在AggregateMeasure前面
的String为返回值,用于返回聚合指标的结果;string filter为筛选参数,例如:
Url Contains“xxx”(Url包含”xxx”),如有多个筛选参数,则可通过预设字符
进行分隔;string measure代表聚合方式的聚合方式信息,如sum(pvduration),表
示对pvduration进行求和,生成相应的聚合指标。
作为一种可选的实施方式,预设字符可以为冒号、分号等。返回的用于记录聚合
指标的聚合指标字符串以“IsMatched:1;PVCount:2;PVDuration:10”、预设字符为
“分号”为例进行举例说明:PVArray为符合过滤条件的网页浏览记录PV的数量,
PVDuration为符合条件的所有所有网页浏览记录的持续时间Duration之和。由JSON
字符串可知,符合过滤条件的网页浏览记录PV共有2个,符合过滤条件的PV所有网
页浏览记录的持续时间为10s。当需要计算平均值Avg时,需要用到总的PV的数量和
总的PV持续时间两个派生列,因此,得到上面的返回值,再通过例如正则字符串处理
函数或是Impala自带的字符串处理函数,还可以方便的获取到相关列的值。而在需要
多个列的信息时,可以通过预设字符将这些信息列进行拼接,在使用时通过对预设字
符进行识别,从而实现对其进行拆解。
图2是根据本发明实施例的JSON字符串的处理装置的示意图。如图2所示,该装
置包括:第一获取模块21、第一生成模块23和确定模块25。
其中,第一获取模块21,用于获取待处理的JSON字符串;第一生成模块23,用
于根据JSON字符串的第一格式规则对JSON字符串进行拆分,生成字段集合;确定模
块25,用于按照预先设置的聚合处理参数对字段集合中的字段进行聚合处理,确定聚
合指标。
具体的,通过上述第一获取模块21、第一生成模块23和确定模块25,首先,将
获取到的JSON字符串进行你给拆分处理,拆分得到与JSON字符串对应的字段集合,
从而根据字段确定JSON字符串中包含的多条数据信息。然后,根据预先设置的聚合处
理参数对字段集合中的数据信息进行聚合处理,从而得到相应的聚合指标。
其中,在生成JSON字符串时,是按照固定的格式规则进行生成的,因此,可以通
过对JSON字符串中用于分割数据信息的预设字符进行识别,实现对JSON字符串进行
拆分,从而得到字段集合。
通过上述方法,达到了直接对JSON字符串中的数据信息进行聚合处理的目的,从
而实现了提高对JSON字符串的处理效率的技术效果,进而解决了在做聚合处理时由于
JSON的反序列化处理性能差导致的运行效率低的技术问题。
作为一种可选的实施方式,聚合处理参数至少包括:筛选参数和聚合参数,其中,
确定模块25包括:子筛选模块251和子聚合模块253。
其中,子筛选模块251,用于按照筛选参数对字段集合进行筛选,生成待聚合字
段集合;子聚合模块253,用于按照聚合参数对聚合字段集合进行聚合处理,确定聚
合指标。
具体的,通过上述子筛选模块251和子聚合模块253,首先,利用筛选参数对字
段集合中的字段集合进行维度过滤,得到用于进行聚合处理的聚合字段集合。然后,
利用聚合参数对聚合字段集合中的字段信息进行聚合处理,从而最终得到聚合指标。
作为一种可选的实施方式,在上述第一生成模块23中,可以包括:第一子确定模
块和子生成模块。
其中,第一子确定模块,用于确定第一格式规则中用于对JSON字符串中的多条信
息进行分割的预设字符;子生成模块,用于根据预设字符对JSON字符串进行拆分,生
成字段集合。
具体的,在上述第一子确定模块和子生成模块中,首先,根据用于生成JSON字符
串的第一格式规则,确定第一格式规则中用于对多条信息进行分割的预设字符。然后,
利用预设字符对JSON字符串进行拆分,得到JSON字符串中与各条信息对应的字段集
合。
作为一种可选的实施方式,上述装置还可以包括:第二获取模块和第二生成模块。
其中,第二获取模块,用于获取预先设置的筛选条件,其中,筛选条件至少包括:
关键字;第二生成模块,用于利用筛选条件对字段集合中的字段进行筛选,生成新字
段集合。
通过上述第二获取模块和第二生成模块,在对JSON字符串进行拆分之后,可以先
按照预先设置的筛选条件对字段集合中的信息进行筛选,将不符合筛选条件的信息从
字段集合中去除掉,生成新字段集合。通过上述筛选,可以聚合处理时,提高对JSON
字符串进行处理的精确度。其中,筛选条件可以包括:关键字、时间等,可以根据实
际需要进行设置,此处不作限制。
作为一种可选的实施方式,在上述确定模块25中,可以包括:子获取模块和第二
子确定模块。
其中,子获取模块,用于获取预先设置的聚合处理参数,其中,聚合处理参数至
少包括:求和参数、计数参数;第二子确定模块,用于根据聚合处理参数对字段集合
中的字段进行聚合处理,确定与聚合处理参数对应的聚合指标。
具体的,在上述子获取模块和第二子确定模块中,获取预先设置的至少一个聚合
处理参数,并分别利用各个聚合处理参数对字段集合中的各个字段进行相应的聚合处
理,以最终得到聚合指标。其中,聚合指标与聚合处理参数对应,并可以采用与记录
聚合处理参数的字符串相应的格式规则对其进行合并。
作为一种可选的实施方式,如图3所示,上述装置还可以包括:第三生成模块27。
其中,第三生成模块27,用于按照预先设置的第二格式规则对聚合指标进行处理,
生成聚合指标字符串。
具体的,在经过不同的聚合处理,通常可以得到多个聚合指标。通过上述第三生
成模块27,对得到的多个聚合指标进行处理,从而生成一个聚合指标字符串,从而便
于存储和读取。
作为一种可选的实施方式,在上述装置中还可以包括:
处理模块,用于按照预先设置的分析参数对聚合指标进行处理,生成新聚合指标。
具体的,通过聚合处理参数对字段进行处理,虽然可以得到聚合处理后的聚合指
标。有时并不能满足需求。因此,可以进一步通过上述处理模块,利用预先设置的分
析参数对聚合指标进行进一步的分析处理,得到新的聚合指标。
所述JSON字符串的处理装置包括处理器和存储器,上述第一获取模块、第一生成
模块、确定模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的
上述程序单元。上述第一格式规则、筛选条件、聚合处理参数和第二格式规则都可以
存储在存储器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个
或以上,通过调整内核参数解析文本内容。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/
或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一
个存储芯片。
本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适
于执行初始化有如下方法步骤的程序代码:获取待处理的JSON字符串;根据JSON字
符串的第一格式规则对JSON字符串进行拆分,生成字段集合;按照预先设置的聚合处
理参数对字段集合中的字段进行聚合处理,确定聚合指标。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有
详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它
的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,
可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件
可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所
显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模
块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显
示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到
多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案
的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以
是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成
的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,
可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质
上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的
形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一
台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所
述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only
Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘
等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润
饰也应视为本发明的保护范围。