CN115629762A - 一种json数据处理方法、装置、电子设备及存储介质 - Google Patents
一种json数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115629762A CN115629762A CN202211240692.8A CN202211240692A CN115629762A CN 115629762 A CN115629762 A CN 115629762A CN 202211240692 A CN202211240692 A CN 202211240692A CN 115629762 A CN115629762 A CN 115629762A
- Authority
- CN
- China
- Prior art keywords
- code
- json data
- target
- target request
- acquiring
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 37
- 238000004458 analytical method Methods 0.000 claims abstract description 17
- 230000003068 static effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000007405 data analysis Methods 0.000 abstract 2
- 230000015654 memory Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请提供了一种JSON数据处理方法、装置、电子设备及存储介质,该方法包括:接收第一目标请求,从第一目标请求中获取第一目标请求所携带的第一JSON数据,并将第一JSON数据存储在缓存中;根据第一目标请求所携带的第一位置标识,获取第一位置标识所指定的业务代码,其中,业务代码用于获取第一JSON数据的入参信息;根据业务代码,确定业务代码中用于获取第一JSON数据的入参信息的代码规则,并将代码规则定义为入参模板;基于预设的编译规则,对入参模板进行编译处理,得到目标源码,并通过目标源码解析第二目标请求中所携带的第二JSON数据。本申请能够提高JSON数据的解析效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种JSON数据处理方法、装置、电子设备及存储介质。
背景技术
JS对象简谱(JavaScript Object Notation,JSON)是一种轻量级的数据交换格式。它是由欧洲计算机协会制定的脚本程序设计语言(European Computer ManufacturersAssociation Script,ECMAScript),采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
现在Java最快的类库提供对JSON解析成Java对象的速度在300微秒左右,但通常情况下,Java类库普遍采用遍历字符串的方式来对JSON数据进行解析,在遍历字符串的过程中通过反射填充对象属性。由于Java反射是一种解释操作,需要查找执行入口、判断访问权限、查找所属类和代码执行地址才能执行,因此,每次解析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数据的入参信息;
处理模块,根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板;
解析模块,基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,并通过所述目标源码解析第二目标请求中所携带的第二JSON数据,其中,所述第二目标请求携带了第二位置标识,所述第一位置标识与所述第二位置标识相同。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行第一方面任一项所述的JSON数据处理方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行第一方面任一项所述的JSON数据处理方法。
本申请实施例具有以下有益效果:
在首次接收第一目标请求时,通过第一目标请求所携带的第一位置标识,得到用于获取第一JSON数据入参信息的业务代码,然后从业务代码中提取业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将代码规则封装为入参模板,然后基于预设的编译规则,在入参模板的基础上添加执行代码和出参代码,得到目标代码,目标代码在执行的过程中,可以对入参信息(第一JSON数据)进行解析,得到解析结果(出参信息);而后,对目标代码进行编译处理,得到目标源码,目标源码可以存储在缓存中,当接收到携带了第二位置标识(第一位置标识相同)的第二目标请求时,可以直接通过目标源码对第二目标请求中的第二JSON数据进行解析,避免了在执行过程中多次查找执行入口、判断访问权限、查找所属类和代码执行地址,从而提高了解析效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本申请实施例提供的步骤S101-S104的流程示意图;
图2是本申请实施例提供的步骤S1031-S1032的流程示意图;
图3是本申请实施例提供的步骤S201-S202的流程示意图;
图4是本申请实施例提供的步骤S2021-S2022的流程示意图;
图5是本申请实施例提供的步骤S301-S303的流程示意图;
图6是本申请实施例提供的JSON数据处理装置的结构示意图;
图7是本申请实施例提供的电子设备的组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语是为了描述本申请实施例的目的,不是在限制本申请。
参见图1,图1是本申请实施例提供的JSON数据处理方法步骤S101-S104的流程示意图,将结合图1示出的步骤S101-S104进行说明。
步骤S101,接收第一目标请求,从所述第一目标请求中获取所述第一目标请求所携带的第一JSON数据,并将所述第一JSON数据存储在缓存中;
步骤S102,根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,其中,所述业务代码用于获取所述第一JSON数据的入参信息;
步骤S103,根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板;
步骤S104,基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,并通过所述目标源码解析第二目标请求中所携带的第二JSON数据,其中,所述第二目标请求携带了第二位置标识,所述第一位置标识与所述第二位置标识相同。
上述JSON数据处理方法,在首次接收第一目标请求时,通过第一目标请求所携带的第一位置标识,得到用于获取第一JSON数据入参信息的业务代码,然后从业务代码中提取业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将代码规则封装为入参模板,然后基于预设的编译规则,在入参模板的基础上添加执行代码和出参代码,得到目标代码,目标代码在执行的过程中,可以对入参信息(第一JSON数据)进行解析,得到解析结果(出参信息);而后,对目标代码进行编译处理,得到目标源码,目标源码可以存储在缓存中,当接收到携带了第二位置标识(第一位置标识相同)的第二目标请求时,可以直接通过目标源码对第二目标请求中的第二JSON数据进行解析,避免了在执行过程中多次查找执行入口、判断访问权限、查找所属类和代码执行地址,从而提高了解析效率。
下面分别对本申请实施例的上述示例性的各步骤进行说明。
在步骤S101中,接收第一目标请求,从所述第一目标请求中获取所述第一目标请求所携带的第一JSON数据,并将所述第一JSON数据存储在缓存中。
这里,第一目标请求中只有JSON参数时,可以通过ajax发送,当除JSON参数外还有其他参数,可以通过form表单提交,或者在URL中直接拼接参数,并对URL进行编码,在接收到第一目标请求后,将第一目标请求所携带的第一JSON数据存储在缓存中,等待后续处理。
在步骤S102中,根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,其中,所述业务代码用于获取所述第一JSON数据的入参信息。
在步骤S103中,根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板。
这里,第一位置标识可以是统一资源定位器(Uniform Resource Locator,URL),URL地址指向了用于获取第一JSON数据入参信息的业务代码,业务代码中包括用于获取所述第一JSON数据的入参信息的代码规则,也即入参实体类Java对象信息,可以将入参实体类Java对象信息进行封装,封装为入参模板,作为入参的通用模板,用于处理后续相同URL下的JSON数据。
在步骤S104中,基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,并通过所述目标源码解析第二目标请求中所携带的第二JSON数据,其中,所述第二目标请求携带了第二位置标识,所述第一位置标识与所述第二位置标识相同。
这里,在得到入参模板后,还需要在入参模板的基础上,添加用于解析第一JSON数据的执行代码和输出解析后结果的出参代码,从而得到一段完整的目标代码,目标源码可以在输入第一JSON数据(入参)后对第一JSON数据进行解析,并返回解析结果(出参)。
进一步地,将目标代码进行编译,得到目标源码,该目标源码可以存储在缓存中,直接被机器所执行,后续的第二目标请求中(携带了第二位置标识,且第一位置标识与第二位置标识相同,也即URL相同)的第二JSON数据可以直接通过目标源码进行解析。
在一些实施例中,所述根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码之前,所述方法还包括:
对所述第一JSON数据的格式进行检测处理,当所述第一JSON数据的格式不符合JSON数据格式时,停止获取所述第一位置标识所指定的业务代码。
这里,在获取第一位置标识所指定的业务代码之前,需要先对第一JSON数据的格式进行校验,确定第一JSON数据是否符合JSON格式,若第一JSON数据的格式有误,则后续的处理就没有意义了,因此,当第一JSON数据的格式有误时,停止获取所述第一位置标识所指定的业务代码。
在一些实施例中所述第一位置标识为统一资源定位器,所述根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,包括:
从所述第一目标请求所携带的统一资源定位器中确定目标地址,通过所述目标地址获取所述目标地址关联的所述业务代码。
这里,第一目标请求会携带有统一资源定位器,即URL,通过该URL,可以访问该URL所指向的方法,并获取方法上对应的信息,这些信息以业务代码的形式存在,其中包括了入参实体类对象信息。
需要说明的是,在本申请实施例中,入参实体类对象信息为入参实体类Java对象信息。
在一些实施例中,参见图2,图2是本申请实施例提供的步骤S1031-S1032的流程示意图,图1示出的步骤S103可以通过步骤S1031-S1032实现,将结合各步骤进行说明。
在步骤S1031中,从所述业务代码中确定入参实体类对象信息。
在步骤S1032中,对所述入参实体类对象信息进行封装处理,得到入参模板。
这里,从上述实施例得到的业务代码中可以提取入参实体类Java对象信息,入参实体类Java对象信息中定义了第一JSON数据的格式、字段等信息,将该入参实体类Java对象信息进行封装,封装为入参模板,
如此,入参模板对应的代码规则能够与第一JSON数据的相匹配。
在一些实施例中,参见图3,图3是本申请实施例提供的步骤S201-S202的流程示意图,所述基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,可以通过步骤S201-S202实现,将结合各步骤进行说明。
在步骤S201中,对所述入参模板添加执行代码和出参代码,得到目标代码,其中,所述执行代码用于对所述入参信息进行解析,所述出参代码用于输出解析后的所述第一JSON数据。
这里,入参模板仅能对第一JSON数据进行输入,对弈第一JSON数据的解析及输出,需要通过预设的执行代码和出参代码实现,在传统方式中,执行代码和出参代码会重复被调用,每当新的请求被接收后,都会调用执行代码和出参代码对JSON数据进行解析,因此,这里将预设的执行代码和出参代码添加至入参模板,使其形成一段完整的具有入参、执行(即解析)、出参的目标代码。
在步骤S202中,对所述目标代码进行编译处理,得到目标源码。
这里,在得到目标代码后,还需要对目标代码进行编译处理,使目标代码转换为能够被机器所识别的机器代码,也即目标源码。后续的解析过程,可通过直接调用目标源码来实现。
在一些实施例中,参见图4,图4是本申请实施例提供的步骤S2021-S2022的流程示意图,图3示出的步骤S202可以通过步骤S2021-2022实现,将结合各步骤进行说明。
在步骤S2021中,将所述目标代码进行静态编译处理,得到字节码。
这里,目标代码作为静态语言并行不能够直接执行,而是需要编译,需要首先通过Javac指令将目标代码(Java代码)变为Java字节码,这一过程即为静态编译过程。
在步骤S2022中,对所述字节码进行编译处理,得到本地机器码,并将所述本地机器码作为所述目标源码。
这里,通过Java字节码执行引擎中的两个编译器(C1与C2编辑器,C1用于客户端,C2用于服务器)对Java字节码进行编译,将其最直接便以为本地机器码来执行。
在一些实施例中,参见图5,图5是本申请实施例提供的步骤S301-S303的流程示意图,所述通过所述目标源码解析第二目标请求中所携带的第二JSON数据,可以通过步骤S301-S303实现,将结合各步骤进行说明。
在步骤S301中,从所述第二目标请求中获取所述第二目标请求所携带的第二JSON数据,并将所述第二JSON数据存储在所述缓存中。
这里,在执行完步骤S301之后,可以先判断是否已经生成了入参模板,若已经生成了入参模板,则继续执行步骤S302,若没有生成入参模板,则将第二JSON数据作为第一JSON数据执行本申请实施例所提供的方法,生成对应的目标源码即可。
在步骤S302中,从所述缓存中读取所述第二JSON数据,并将读取的所述第二JSON数据作为所述入参信息。
这里,第二目标请求中的URL与第一目标请求中的URL相同,因此,第二目标请求中的第二JSON数据也可以通过目标源码来解析,因此,从缓存中读取第二JSON数据,并将读取的第二JSON数据作为入参信息。
在步骤S303中,通过所述目标源码对所述入参信息进行解析,得到出参信息,其中,所述出参信息为解析后的所述第二JSON数据。
这里,通过目标源码对第二JSON数据进行解析,入参信息经过执行代码进行解析,循环遍历第二JSON数据,通过JSON的key调用Java对象的set方法,如果遇到层级就先new对象再调用该对象的set方法,最终通过出参代码返回结果。
综上所述,通过本申请实施例具有以下有益效果:
在首次接收第一目标请求时,通过第一目标请求所携带的第一位置标识,得到用于获取第一JSON数据入参信息的业务代码,然后从业务代码中提取业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将代码规则封装为入参模板,然后基于预设的编译规则,在入参模板的基础上添加执行代码和出参代码,得到目标代码,目标代码在执行的过程中,可以对入参信息(第一JSON数据)进行解析,得到解析结果(出参信息);而后,对目标代码进行编译处理,得到目标源码,目标源码可以存储在缓存中,当接收到携带了第二位置标识(第一位置标识相同)的第二目标请求时,可以直接通过目标源码对第二目标请求中的第二JSON数据进行解析,避免了在执行过程中多次查找执行入口、判断访问权限、查找所属类和代码执行地址,从而提高了解析效率。
基于同一发明构思,本申请实施例中还提供了与第一实施例中JSON数据处理方法对应的JSON数据处理装置,由于本申请实施例中的装置解决问题的原理与上述JSON数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图6所示,图6是本申请实施例提供的JSON数据处理装置600的结构示意图。JSON数据处理装置600包括:
接收模块601,用于接收第一目标请求,从所述第一目标请求中获取所述第一目标请求所携带的第一JSON数据,并将所述第一JSON数据存储在缓存中;
获取模块602,用于根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,其中,所述业务代码用于获取所述第一JSON数据的入参信息;
处理模块603,根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板;
解析模块604,基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,并通过所述目标源码解析第二目标请求中所携带的第二JSON数据,其中,所述第二目标请求携带了第二位置标识,所述第一位置标识与所述第二位置标识相同。
本领域技术人员应当理解,图6所示的JSON数据处理装置600中的各单元的实现功能可参照前述JSON数据处理方法的相关描述而理解。图6所示的JSON数据处理装置600中的各单元的功能可通过运行于处理器上的程序而实现,也可通过具体的逻辑电路而实现。
在一种可能的实施方式中,获取模块602根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码之前,所述方法还包括:
对所述第一JSON数据的格式进行检测处理,当所述第一JSON数据的格式不符合JSON数据格式时,停止获取所述第一位置标识所指定的业务代码。
在一种可能的实施方式中,所述第一位置标识为统一资源定位器,获取模块602根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,包括:
从所述第一目标请求所携带的统一资源定位器中确定目标地址,通过所述目标地址获取所述目标地址关联的所述业务代码。
在一种可能的实施方式中,处理模块603根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板,包括:
从所述业务代码中确定入参实体类对象信息;
对所述入参实体类对象信息进行封装处理,得到入参模板。
在一种可能的实施方式中,解析模块604基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,包括:
对所述入参模板添加执行代码和出参代码,得到目标代码,其中,所述执行代码用于对所述入参信息进行解析,所述出参代码用于输出解析后的所述第一JSON数据;
对所述目标代码进行编译处理,得到目标源码。
在一种可能的实施方式中,解析模块604对所述目标代码进行编译处理,得到目标源码,包括:
将所述目标代码进行静态编译处理,得到字节码;
对所述字节码进行编译处理,得到本地机器码,并将所述本地机器码作为所述目标源码。
在一种可能的实施方式中,解析模块604通过所述目标源码解析第二目标请求中所携带的第二JSON数据,包括:
从所述第二目标请求中获取所述第二目标请求所携带的第二JSON数据,并将所述第二JSON数据存储在所述缓存中;
从所述缓存中读取所述第二JSON数据,并将读取的所述第二JSON数据作为所述入参信息;
通过所述目标源码对所述入参信息进行解析,得到出参信息,其中,所述出参信息为解析后的所述第二JSON数据。
上述JSON数据处理装置在首次接收第一目标请求时,通过第一目标请求所携带的第一位置标识,得到用于获取第一JSON数据入参信息的业务代码,然后从业务代码中提取业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将代码规则封装为入参模板,然后基于预设的编译规则,在入参模板的基础上添加执行代码和出参代码,得到目标代码,目标代码在执行的过程中,可以对入参信息(第一JSON数据)进行解析,得到解析结果(出参信息);而后,对目标代码进行编译处理,得到目标源码,目标源码可以存储在缓存中,当接收到携带了第二位置标识(第一位置标识相同)的第二目标请求时,可以直接通过目标源码对第二目标请求中的第二JSON数据进行解析,避免了在执行过程中多次查找执行入口、判断访问权限、查找所属类和代码执行地址,从而提高了解析效率。
如图7所示,图7为本申请实施例提供的电子设备700的组成结构示意图,所述电子设备700,包括:
处理器701、存储介质702和总线703,所述存储介质702存储有所述处理器701可执行的机器可读指令,当电子设备700运行时,所述处理器701与所述存储介质702之间通过总线703通信,所述处理器701执行所述机器可读指令,以执行本申请实施例所述的JSON数据处理方法的步骤。
实际应用时,所述电子设备700中的各个组件通过总线703耦合在一起。可理解,总线703用于实现这些组件之间的连接通信。总线703除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线703。
上述电子设备在首次接收第一目标请求时,通过第一目标请求所携带的第一位置标识,得到用于获取第一JSON数据入参信息的业务代码,然后从业务代码中提取业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将代码规则封装为入参模板,然后基于预设的编译规则,在入参模板的基础上添加执行代码和出参代码,得到目标代码,目标代码在执行的过程中,可以对入参信息(第一JSON数据)进行解析,得到解析结果(出参信息);而后,对目标代码进行编译处理,得到目标源码,目标源码可以存储在缓存中,当接收到携带了第二位置标识(第一位置标识相同)的第二目标请求时,可以直接通过目标源码对第二目标请求中的第二JSON数据进行解析,避免了在执行过程中多次查找执行入口、判断访问权限、查找所属类和代码执行地址,从而提高了解析效率。
本申请实施例还提供了一种计算机可读存储介质,所述存储介质存储有可执行指令,当所述可执行指令被至少一个处理器701执行时,实现本申请实施例所述的JSON数据处理方法。
在一些实施例中,存储介质可以是磁性随机存取存储器(FRAM,FerromagneticRandom Access Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read-Only Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,HyperTextMarkupLanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
上述计算机可读存储介质在首次接收第一目标请求时,通过第一目标请求所携带的第一位置标识,得到用于获取第一JSON数据入参信息的业务代码,然后从业务代码中提取业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将代码规则封装为入参模板,然后基于预设的编译规则,在入参模板的基础上添加执行代码和出参代码,得到目标代码,目标代码在执行的过程中,可以对入参信息(第一JSON数据)进行解析,得到解析结果(出参信息);而后,对目标代码进行编译处理,得到目标源码,目标源码可以存储在缓存中,当接收到携带了第二位置标识(第一位置标识相同)的第二目标请求时,可以直接通过目标源码对第二目标请求中的第二JSON数据进行解析,避免了在执行过程中多次查找执行入口、判断访问权限、查找所属类和代码执行地址,从而提高了解析效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和电子设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,平台服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种JSON数据处理方法,其特征在于,包括以下步骤:
接收第一目标请求,从所述第一目标请求中获取所述第一目标请求所携带的第一JSON数据,并将所述第一JSON数据存储在缓存中;
根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,其中,所述业务代码用于获取所述第一JSON数据的入参信息;
根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板;
基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,并通过所述目标源码解析第二目标请求中所携带的第二JSON数据,其中,所述第二目标请求携带了第二位置标识,所述第一位置标识与所述第二位置标识相同。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码之前,所述方法还包括:
对所述第一JSON数据的格式进行检测处理,当所述第一JSON数据的格式不符合JSON数据格式时,停止获取所述第一位置标识所指定的业务代码。
3.根据权利要求1所述的方法,其特征在于,所述第一位置标识为统一资源定位器,所述根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,包括:
从所述第一目标请求所携带的统一资源定位器中确定目标地址,通过所述目标地址获取所述目标地址关联的所述业务代码。
4.根据权利要求1所述的方法,其特征在于,所述根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板,包括:
从所述业务代码中确定入参实体类对象信息;
对所述入参实体类对象信息进行封装处理,得到入参模板。
5.根据权利要求1所述的方法,其特征在于,所述基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,包括:
对所述入参模板添加执行代码和出参代码,得到目标代码,其中,所述执行代码用于对所述入参信息进行解析,所述出参代码用于输出解析后的所述第一JSON数据;
对所述目标代码进行编译处理,得到目标源码。
6.根据权利要求5所述的方法,其特征在于,所述对所述目标代码进行编译处理,得到目标源码,包括:
将所述目标代码进行静态编译处理,得到字节码;
对所述字节码进行编译处理,得到本地机器码,并将所述本地机器码作为所述目标源码。
7.根据权利要求1所述的方法,其特征在于,所述通过所述目标源码解析第二目标请求中所携带的第二JSON数据,包括:
从所述第二目标请求中获取所述第二目标请求所携带的第二JSON数据,并将所述第二JSON数据存储在所述缓存中;
从所述缓存中读取所述第二JSON数据,并将读取的所述第二JSON数据作为所述入参信息;
通过所述目标源码对所述入参信息进行解析,得到出参信息,其中,所述出参信息为解析后的所述第二JSON数据。
8.一种JSON数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收第一目标请求,从所述第一目标请求中获取所述第一目标请求所携带的第一JSON数据,并将所述第一JSON数据存储在缓存中;
获取模块,用于根据所述第一目标请求所携带的第一位置标识,获取所述第一位置标识所指定的业务代码,其中,所述业务代码用于获取所述第一JSON数据的入参信息;
处理模块,根据所述业务代码,确定所述业务代码中用于获取所述第一JSON数据的入参信息的代码规则,并将所述代码规则定义为入参模板;
解析模块,基于预设的编译规则,对所述入参模板进行编译处理,得到目标源码,并通过所述目标源码解析第二目标请求中所携带的第二JSON数据,其中,所述第二目标请求携带了第二位置标识,所述第一位置标识与所述第二位置标识相同。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一项所述的JSON数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一项所述的JSON数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211240692.8A CN115629762A (zh) | 2022-10-11 | 2022-10-11 | 一种json数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211240692.8A CN115629762A (zh) | 2022-10-11 | 2022-10-11 | 一种json数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115629762A true CN115629762A (zh) | 2023-01-20 |
Family
ID=84905068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211240692.8A Pending CN115629762A (zh) | 2022-10-11 | 2022-10-11 | 一种json数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115629762A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117240946A (zh) * | 2023-11-13 | 2023-12-15 | 深圳市麦谷科技有限公司 | 设备的解析方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542412A (zh) * | 2018-10-16 | 2019-03-29 | 平安普惠企业管理有限公司 | 接口信息生成方法、装置、计算机设备和存储介质 |
CN111552838A (zh) * | 2020-03-26 | 2020-08-18 | 平安医疗健康管理股份有限公司 | 数据处理方法及装置、计算机设备、存储介质 |
CN112099800A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 代码数据的处理方法、装置和服务器 |
CN112395843A (zh) * | 2020-11-16 | 2021-02-23 | 杭州安恒信息技术股份有限公司 | 一种基于php代码的业务处理方法、装置及设备和介质 |
-
2022
- 2022-10-11 CN CN202211240692.8A patent/CN115629762A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542412A (zh) * | 2018-10-16 | 2019-03-29 | 平安普惠企业管理有限公司 | 接口信息生成方法、装置、计算机设备和存储介质 |
CN111552838A (zh) * | 2020-03-26 | 2020-08-18 | 平安医疗健康管理股份有限公司 | 数据处理方法及装置、计算机设备、存储介质 |
CN112099800A (zh) * | 2020-09-27 | 2020-12-18 | 中国建设银行股份有限公司 | 代码数据的处理方法、装置和服务器 |
CN112395843A (zh) * | 2020-11-16 | 2021-02-23 | 杭州安恒信息技术股份有限公司 | 一种基于php代码的业务处理方法、装置及设备和介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117240946A (zh) * | 2023-11-13 | 2023-12-15 | 深圳市麦谷科技有限公司 | 设备的解析方法、装置、电子设备及存储介质 |
CN117240946B (zh) * | 2023-11-13 | 2024-02-13 | 深圳市麦谷科技有限公司 | 设备的解析方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112015430B (zh) | JavaScript代码翻译方法、装置、计算机设备及存储介质 | |
Fantechi et al. | Applications of linguistic techniques for use case analysis | |
CN110704063B (zh) | 编译和执行智能合约的方法及装置 | |
CN102200911B (zh) | 变量闭包 | |
CN110688122B (zh) | 编译和执行智能合约的方法及装置 | |
US7823144B2 (en) | Computer program code comparison using lexemes | |
CN102830975B (zh) | 一种汇编语言到高级语言的代码转换方法和装置 | |
CN109308254A (zh) | 一种测试方法、装置及测试设备 | |
US11327722B1 (en) | Programming language corpus generation | |
CN115686631B (zh) | 一种基于知识基的随机指令生成方法、装置及存储介质 | |
CN114625844B (zh) | 一种代码搜索方法、装置及设备 | |
CN112379917A (zh) | 浏览器兼容性提升方法、装置、设备及存储介质 | |
US6625807B1 (en) | Apparatus and method for efficiently obtaining and utilizing register usage information during software binary translation | |
CN115629762A (zh) | 一种json数据处理方法、装置、电子设备及存储介质 | |
Duregård et al. | Embedded parser generators | |
CN111190643A (zh) | 程序代码注释的生成方法、系统、电子设备及存储介质 | |
CN110362317B (zh) | 一种代码转换方法、装置和存储介质 | |
Abuín et al. | Perldoop: Efficient execution of Perl scripts on Hadoop clusters | |
CN116166907B (zh) | 一种使用WebAssembly和服务页面编译技术开发Web应用的方法及装置 | |
CN114490370A (zh) | 兼容多语言的测试方法、装置以及电子设备 | |
CN115145575A (zh) | 一种高级语言的解析方法、设备和计算机可读存储介质 | |
CN113760291B (zh) | 日志输出的方法和装置 | |
Wang et al. | User-Customizable Transpilation of Scripting Languages | |
CN113448874A (zh) | 一种单元测试脚本的生成方法及装置 | |
Lopez-Rojas | OMCCp: A MetaModelica Based Parser Generator Applied to Modelica |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20230120 |
|
RJ01 | Rejection of invention patent application after publication |