CN116610679A - json数据的解析方法、装置、计算机设备及介质 - Google Patents

json数据的解析方法、装置、计算机设备及介质 Download PDF

Info

Publication number
CN116610679A
CN116610679A CN202310869518.8A CN202310869518A CN116610679A CN 116610679 A CN116610679 A CN 116610679A CN 202310869518 A CN202310869518 A CN 202310869518A CN 116610679 A CN116610679 A CN 116610679A
Authority
CN
China
Prior art keywords
data
json
array
result data
analyzed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310869518.8A
Other languages
English (en)
Other versions
CN116610679B (zh
Inventor
董方
金宏伟
闫锋
常星
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinrui Tongchuang Beijing Technology Co ltd
Original Assignee
Jinrui Tongchuang Beijing Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinrui Tongchuang Beijing Technology Co ltd filed Critical Jinrui Tongchuang Beijing Technology Co ltd
Priority to CN202310869518.8A priority Critical patent/CN116610679B/zh
Publication of CN116610679A publication Critical patent/CN116610679A/zh
Application granted granted Critical
Publication of CN116610679B publication Critical patent/CN116610679B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种json数据的解析方法、装置、计算机设备及介质,涉及数据处理技术领域,其中,该方法包括:从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串,并将每个字符串保存为一个第一数组;按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至结果数据交换格式对象中。该方案在json文件格式未知的前提下实现json数据解析,即上述方法可解析不同格式的json文件。

Description

json数据的解析方法、装置、计算机设备及介质
技术领域
本发明涉及数据处理技术领域,特别涉及一种json数据的解析方法、装置、计算机设备及介质。
背景技术
日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志。具有处理历史数据、诊断问题的追踪以及理解系统的活动等重要作用。通常,日志文件为需要监控的文件,需要随时能够通过日志文件确认系统运行的情况。客户端的应用程序运行过程产生的日志文件可为json格式(一种轻量级数据交换格式),还可能为更加复杂的json嵌套json的格式。
当作为终端的移动客户端的产生大量日志数据时,这些大量日志数据的处理就成为一个难题。同时,因客户端的操作系统不同(例如ios和安卓),不同客户端上报的json格式会存在较大不同,在不确定json格式的前提下,采用普通的数据仓库工具直接读取时难度较大,无法用一套sql解析不同格式的json数据(使用hive解析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是本发明实施例提供的一种计算机设备的结构框图;
图3是本发明实施例提供的一种json数据的解析装置的结构框图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
对于客户端不同的操作系统(例如ios和安卓)上报的json格式会存在不同,现有技术在不确定json格式的前提下,无法用一套sql解析所有不同格式的json(即使用hive解析json字符串)。其中,hive为基于Hadoop(分布式系统基础架构)的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop(分布式系统基础架构)中的大规模数据的机制。
例如,在客户端操作系统是iso的时候,日志文件可以为以下格式:
{
"A":"A01",
"B":{
"C":"C01",
"D":{
"E":"E01"
},
"F":{
"G":"G01",
"H":{
"I":"I01",
"J":"J01"
},
}
}
"K": "K01"
}。
当客户端操作系统为安卓的时候,日志文件可以为以下格式:
{
"A":"A01",
"B":{
"C":"C01",
"D":{
"E":"E01"
}
},
"F":{
"G":"G01",
"H":{
"I":"I01",
"J":"J01"
}
},
"K":" K01"
}。
从上述安卓和iso的日志数据可以看出,虽然日志文件的内容相同,但是二者的json嵌套结构和层次不同。
在本发明实施例中,提供了一种json数据的解析方法,如图1所示,该方法包括:
步骤S101:从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串,并将每个字符串保存为一个第一数组;
步骤S102:初始化结果数据交换格式对象,结果数据交换格式对象用于保存解析后的数据,且解析后的数据为包括键与键值的二元数据交换格式;
步骤S103:针对每个第一数组,按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至结果数据交换格式对象中,其中,解析结果数据包括元素的键与键值的二元数据。
具体的,以下面的json数据(示例数据)为例,解释具体如何解析json数据:
{
"first_a1":[
{
"second_b1":"b1",
"second_b2":{
"name":"zhangsan",
"age":18
},
"second_b3":{
"gender":"F",
"job":"worker"
}
}
],
"first_a2":"a2"
}。
具体实施时,为了将数据仓库表的中的所有行均处理完毕,提出了通过以下步骤实现将每行的待解析json数据转换为一个字符串:
根据数据仓库表的行,利用结构化数据处理工具逐行读取每行中的待解析json数据,并将每行的待解析json数据转换为一个字符串。
具体的,数据仓库表的行中分别保存有不同的json数据,分别来自于各种客户端,利用SparkSql(海量结构化数据处理框架)从Hive(数据仓库工具)中读取到json数据,将读出的json数据逐行处理。
具体实施时,首先需要将json数据进行预处理,提出了通过以下步骤从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串:
对每行的待解析json数据进行预处理,以删除空格和换行符;将预处理后的每行的待解析json数据拼接直至生成一个完整的字符串。
具体的,示例数据经过上述步骤处理后,转换为下述字符串:{"first_a1":[{"second_b1":"b1","second_b2":{"name":"zhangsan","age":18},"second_b3":{"gender":"F","job":"worker"}}],"first_a2":"a2"}。
具体实施时,初始化结果数据交换格式对象。结果数据交换格式对象用于保存解析后的数据,且解析后的数据为包括键与键值的二元数据交换格式。
具体的,创建一个空的json对象(即结果数据交换格式对象,此json对象为包括键与键值的二元数据交换格式),以便保留解析完毕的key-value(键与键值)。
具体实施时,为了解析第一数组中的数据,提出了通过以下步骤针对每个第一数组,按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至结果数据交换格式对象中:
对该第一数组中的每个第一个元素循环执行以下步骤,直至该第一数组为空时结束循环:读取该第一数组中的第一个元素作为第一元素,将第一数组中除第一元素外的其他元素保存至第二数组;判断第一元素是否为有效的json串;若是,则通过数据迭代的方式对第一元素进行解析,得到第一元素的解析结果数据;若否,则不对第一元素进行解析。
具体实施时,为了解析第一元素中的数据,提出了通过以下步骤通过数据迭代的方式对所述第一元素进行解析,得到所述第一元素的解析结果数据:
将第一元素转换为键值迭代器;历遍键值迭代器,直至键值迭代器中的元素均处理完毕:依照json串的键与值的区隔方式,将元素分割为键与键值,得到第一元素的解析结果数据。
具体实施时,还提出了通过以下步骤通过数据迭代的方式对第一元素进行解析,得到第一元素的解析结果数据:
判断第一元素的解析结果数据中的每个键值是否为有效的json串;将判断为有效的json串的键值添加至第二数组中,并将第一数组的数据替换为第二数组的数据。
具体的,经过第一次历遍,第一数组中的数据为:
”[{"second_b1":"b1","second_b2":{"name":"zhangsan","age":18}}],{"gender":"F","job":"worker"}”。
经过第二次历遍,第一数组中的数据为:
“{"gender":"F","job":"worker"},{"name":"zhangsan","age":18}”。
以此类推,直到第一数组为空为止,则此时数据仓库表中的这行数据中的所有的key(键)-value(键值)都已经遍历过一遍并且保存至结果数据交换格式对象中。
具体的,示例数据经过上述步骤处理后,结果数据交换格式对象中的数据为:
"second_b1":"b1"
"name":"zhangsan"
"age":18
"gender":"F"
"job":"worker"
"first_a2":"a2"。
具体实施时,为了将结果数据交换格式对象映射至数据仓库的对应表中,提出了通过以下步骤将键值一一映射至数据仓库的对应表:
在得到该第一数组的各个元素的解析结果数据并保存至结果数据交换格式对象中之后,根据待查询的字段名称,将字段名称与结果数据交换格式对象的键进行匹配,根据匹配结果从结果数据交换格式对象中获得字段名称对应的键值;将查询到的键值一一映射至数据仓库的对应表中。
具体的,根据所需要的字段名称(即键key),去结果数据交换格式对象中获取对应的键值(即value),并返回键值的值,最后将返回的键值全部映射到hive表中。
具体的,通过数据库连接引擎连接至hive(数据仓库工具)中,创建数据库以及数据库表,通过hadoop(分布式系统基础架构)命令将键值推送到新创建的hive(数据仓库工具)的表中。
在本实施例中,提供了一种计算机设备,如图2所示,包括存储器201、处理器202及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的json数据的解析。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的json数据的解析的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
基于同一发明构思,本发明实施例中还提供了一种json数据的解析装置,如下面的实施例所述。由于json数据的解析装置解决问题的原理与json数据的解析方法相似,因此json数据的解析装置的实施可以参见json数据的解析方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是本发明实施例的json数据的解析装置的一种结构框图,如图3所示,包括:数据转换模块301、初始化交换格式对象模块302和数据解析模块303,下面对该结构进行说明。
数据转换模块301,用于从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串,并将每个字符串保存为一个第一数组;
初始化交换格式对象模块302,用于初始化结果数据交换格式对象,结果数据交换格式对象用于保存解析后的数据,且解析后的数据为包括键与键值的二元数据交换格式;
数据解析模块303,用于针对每个第一数组,按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至结果数据交换格式对象中,其中,解析结果数据包括元素的键与键值的二元数据。
在一个实施例中,数据转换模块,包括:
数据预处理单元,用于对每行的待解析json数据进行预处理,以删除空格和换行符;
字符串拼接单元,用于将预处理后的每行的待解析json数据拼接直至生成一个完整的字符串。
在一个实施例中,数据解析模块,包括:
第一个元素循环单元,用于对该第一数组中的每个第一个元素循环执行以下步骤,直至该第一数组为空时结束循环:
读取首元素单元,用于读取该第一数组中的第一个元素作为第一元素,将所述第一数组中除所述第一元素外的其他元素保存至第二数组;
有效json判断单元,用于判断所述第一元素是否为有效的json串;
第一元素解析单元,用于若是,则通过数据迭代的方式对所述第一元素进行解析,得到所述第一元素的解析结果数据;若否,则不对所述第一元素进行解析。
在一个实施例中,第一元素解析单元,用于将第一元素转换为键值迭代器;历遍键值迭代器,直至键值迭代器中的元素均处理完毕:依照json串的键与值的区隔方式,将元素分割为键与键值,得到第一元素的解析结果数据。
在一个实施例中,第一元素解析单元,还用于判断第一元素的解析结果数据中的每个键值是否为有效的json串;将判断为有效的json串的键值添加至第二数组中,并将第一数组的数据替换为第二数组的数据。
在一个实施例中,上述装置还包括:
键值读取映射模块,用于在将json文件解析完成后,通过结果数据交换格式对象的键读取键值数据并将键值映射至数据仓库的对应表中。
在一个实施例中,键值读取映射模块,包括:
键值读取单元,用于在得到该第一数组的各个元素的解析结果数据并保存至结果数据交换格式对象中之后,根据待查询的字段名称,将字段名称与结果数据交换格式对象的键进行匹配,根据匹配结果从结果数据交换格式对象中获得字段名称对应的键值;
键值映射单元,用于将查询到的键值一一映射至数据仓库的对应表中。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
本发明实施例实现了如下技术效果:
从数据仓库表中逐行读取待解析json数据,可处理数据仓库表中所有行的json数据;利用结果数据交换格式对象储存解析后的结果;将待解析的json数据转换为一个数组,通过迭代的方式解析数组;根据待查询的字段名称,通过结果数据交换格式对象的键进行匹配,将查询到的键值映射至数据仓库的对应表中,达到保存键值至数据仓库的目的;本发明实施例的json数据的解析方法通用,无需考虑作为终端的客户端产生的日志json文件的格式,使用本发明实施例的json数据的解析方法可以统一解析任意格式的json文件,无需为解析不同json格式而开发不同的程序,从而达到减少开发成本的目的。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种json数据的解析方法,其特征在于,包括:
从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串,并将每个所述字符串保存为一个第一数组;
初始化结果数据交换格式对象,所述结果数据交换格式对象用于保存解析后的数据,且解析后的数据为包括键与键值的二元数据交换格式;
针对每个所述第一数组,按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至所述结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至所述结果数据交换格式对象中,其中,所述解析结果数据包括元素的键与键值的二元数据。
2.如权利要求1所述的json数据的解析方法,其特征在于,针对每个所述第一数组,按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至所述结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至所述结果数据交换格式对象中,包括:
对该第一数组中的每个第一个元素循环执行以下步骤,直至该第一数组为空时结束循环:
读取该第一数组中的第一个元素作为第一元素,将所述第一数组中除所述第一元素外的其他元素保存至第二数组;
判断所述第一元素是否为有效的json串;
若是,则通过数据迭代的方式对所述第一元素进行解析,得到所述第一元素的解析结果数据;若否,则不对所述第一元素进行解析。
3.如权利要求2所述的json数据的解析方法,其特征在于,通过数据迭代的方式对所述第一元素进行解析,得到所述第一元素的解析结果数据,包括:
将所述第一元素转换为键值迭代器;
历遍所述键值迭代器,直至所述键值迭代器中的元素均处理完毕:
依照json串的键与值的区隔方式,将所述元素分割为键与键值,得到所述第一元素的解析结果数据。
4.如权利要求2所述的json数据的解析方法,其特征在于,通过数据迭代的方式对所述第一元素进行解析,得到所述第一元素的解析结果数据,包括:
判断所述第一元素的解析结果数据中的每个键值是否为有效的json串;
将判断为有效的json串的键值添加至所述第二数组中,并将所述第一数组的数据替换为所述第二数组的数据。
5.如权利要求1至4中任一项所述的json数据的解析方法,其特征在于,每行的待解析json数据转换为一个字符串,包括:
对每行的待解析json数据进行预处理,以删除空格和换行符;
将预处理后的每行的待解析json数据拼接直至生成一个完整的字符串。
6.如权利要求1至4中任一项所述的json数据的解析方法,其特征在于,还包括:
在得到该第一数组的各个元素的解析结果数据并保存至所述结果数据交换格式对象中之后,根据待查询的字段名称,将所述字段名称与所述结果数据交换格式对象的键进行匹配,根据匹配结果从所述结果数据交换格式对象中获得所述字段名称对应的键值;
将查询到的所述键值一一映射至数据仓库的对应表中。
7.如权利要求1至4中任一项所述的json数据的解析方法,其特征在于,从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串,包括:
根据数据仓库表的行,利用结构化数据处理工具逐行读取每行中的所述待解析json数据,并将每行的所述待解析json数据转换为一个字符串。
8.一种json数据的解析装置,其特征在于,包括:
数据转换模块,用于从数据仓库表中逐行读取待解析json数据,将每行的待解析json数据转换为一个字符串,并将每个所述字符串保存为一个第一数组;
初始化交换格式对象模块,用于初始化结果数据交换格式对象,所述结果数据交换格式对象用于保存解析后的数据,且解析后的数据为包括键与键值的二元数据交换格式;
数据解析模块,用于针对每个所述第一数组,按照栈的概念依次从该第一数组中取出第一个元素,并通过数据迭代的方式对第一个元素进行解析,得到第一个元素的解析结果数据,并将第一个元素的解析结果数据保存至所述结果数据交换格式对象中,直至该第一数组为空,得到该第一数组的各个元素的解析结果数据并保存至所述结果数据交换格式对象中,其中,所述解析结果数据包括元素的键与键值的二元数据。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的json数据的解析方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至7中任一项所述的json数据的解析方法的计算机程序。
CN202310869518.8A 2023-07-17 2023-07-17 json数据的解析方法、装置、计算机设备及介质 Active CN116610679B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310869518.8A CN116610679B (zh) 2023-07-17 2023-07-17 json数据的解析方法、装置、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310869518.8A CN116610679B (zh) 2023-07-17 2023-07-17 json数据的解析方法、装置、计算机设备及介质

Publications (2)

Publication Number Publication Date
CN116610679A true CN116610679A (zh) 2023-08-18
CN116610679B CN116610679B (zh) 2023-10-17

Family

ID=87680367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310869518.8A Active CN116610679B (zh) 2023-07-17 2023-07-17 json数据的解析方法、装置、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN116610679B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073391A (zh) * 2016-11-11 2018-05-25 阿里巴巴集团控股有限公司 一种json字符串传输、处理的方法及设备
CN109508409A (zh) * 2018-10-23 2019-03-22 魔秀科技(北京)股份有限公司 一种半结构化json数据自由解析适配方法
US20190102389A1 (en) * 2017-10-04 2019-04-04 Dell Products Lp Storing and processing json documents in a sql database table
CN109684607A (zh) * 2017-10-19 2019-04-26 腾讯科技(深圳)有限公司 Json数据解析方法、装置、计算机设备和存储介质
CN110554877A (zh) * 2019-09-05 2019-12-10 北京博睿宏远数据科技股份有限公司 一种json数据解析方法、装置、设备及储存介质
CN111061927A (zh) * 2018-10-16 2020-04-24 阿里巴巴集团控股有限公司 数据处理方法、装置及电子设备
CN113157975A (zh) * 2021-04-26 2021-07-23 中国电信集团工会上海市委员会 一种可扩展标记语言解析系统及方法
US20230205678A1 (en) * 2021-12-23 2023-06-29 Oracle International Corporation Rest api parser for test automation

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108073391A (zh) * 2016-11-11 2018-05-25 阿里巴巴集团控股有限公司 一种json字符串传输、处理的方法及设备
US20190102389A1 (en) * 2017-10-04 2019-04-04 Dell Products Lp Storing and processing json documents in a sql database table
CN109684607A (zh) * 2017-10-19 2019-04-26 腾讯科技(深圳)有限公司 Json数据解析方法、装置、计算机设备和存储介质
CN111061927A (zh) * 2018-10-16 2020-04-24 阿里巴巴集团控股有限公司 数据处理方法、装置及电子设备
CN109508409A (zh) * 2018-10-23 2019-03-22 魔秀科技(北京)股份有限公司 一种半结构化json数据自由解析适配方法
CN110554877A (zh) * 2019-09-05 2019-12-10 北京博睿宏远数据科技股份有限公司 一种json数据解析方法、装置、设备及储存介质
CN113157975A (zh) * 2021-04-26 2021-07-23 中国电信集团工会上海市委员会 一种可扩展标记语言解析系统及方法
US20230205678A1 (en) * 2021-12-23 2023-06-29 Oracle International Corporation Rest api parser for test automation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HARDEEP KAUR DHALLA等: "A Performance Analysis of Native JSON Parsers in Java, Python, MS.NET Core, JavaScript, and PHP", 《2020 16TH INTERNATIONAL CONFERENCE ON NETWORK AND SERVICE MANAGEMENT (CNSM)》 *
欧立业等: "基于JSON的天地图要素符号表达与解析", 测绘与空间地理信息, no. 12 *

Also Published As

Publication number Publication date
CN116610679B (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
WO2022126983A1 (zh) 电子报表文件导出方法、装置、设备及存储介质
CN106202235B (zh) 一种数据处理方法及装置
CN102713834A (zh) 管理记录格式信息
US8422786B2 (en) Analyzing documents using stored templates
CN111221791A (zh) 一种多源异构数据导入数据湖的方法
CN112347165B (zh) 日志处理方法、装置及服务器和计算机可读存储介质
US20230024345A1 (en) Data processing method and apparatus, device, and readable storage medium
CN112084249B (zh) 一种访问记录提取方法及装置
CN113535677B (zh) 数据分析查询管理方法、装置、计算机设备及存储介质
CN113242236A (zh) 一种网络实体威胁图谱构建方法
Fang et al. Meteorological data analysis using mapreduce
CN110046188A (zh) 业务处理方法及其系统
US20130145222A1 (en) Method and system for processing events
CN115658680A (zh) 数据存储方法、数据查询方法和相关装置
CN114297204A (zh) 一种异构数据源的数据存储、检索方法及装置
CN117271478A (zh) 数据迁移方法、装置、存储介质以及电子设备
CN116610679B (zh) json数据的解析方法、装置、计算机设备及介质
CN117472693A (zh) 基于数据湖的埋点数据处理方法、系统、设备及存储介质
CN108564250A (zh) 转发记录实时查看系统、方法、计算机设备及存储介质
CN110795915B (zh) xml文件批量修改方法、系统、设备和计算机可读存储介质
CN111143310B (zh) 日志记录方法及装置、可读存储介质
Mishra et al. Challenges in big data application: a review
CN112347066B (zh) 日志处理方法、装置及服务器和计算机可读存储介质
CN117251384B (zh) 一种接口自动化测试用例生成方法及系统
CN116719866B (zh) 一种多格式数据自适应分发方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant