CN112433709A - 基于json的数据处理方法、装置、设备及介质 - Google Patents
基于json的数据处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112433709A CN112433709A CN202011413471.7A CN202011413471A CN112433709A CN 112433709 A CN112433709 A CN 112433709A CN 202011413471 A CN202011413471 A CN 202011413471A CN 112433709 A CN112433709 A CN 112433709A
- Authority
- CN
- China
- Prior art keywords
- json
- data processing
- preset
- based data
- tool class
- 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 33
- 238000004458 analytical method Methods 0.000 claims abstract description 67
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 23
- 238000013515 script Methods 0.000 claims description 20
- 230000002159 abnormal effect Effects 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000004891 communication Methods 0.000 description 8
- 238000007429 general method Methods 0.000 description 7
- 238000004806 packaging method and process Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 101100295776 Drosophila melanogaster onecut gene Proteins 0.000 description 1
- 241000287127 Passeridae Species 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012360 testing method 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/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及金融科技(Fintech)技术领域,公开了一种基于JSON的数据处理方法,包括:在接收到请求方发送的服务请求时根据预设选择器确定目标解析工具类,预设选择器中包括至少一种解析工具类;服务请求中包括由请求方根据第一自定义适配器得到的第一字符串;通过目标解析工具类调用对应的第二自定义适配器对第一字符串进行反序列化得到第一Java对象,以供根据第一Java对象对服务请求进行处理,第一自定义适配器的属性配置内容与第二自定义适配器的属性配置内容一致。从而在请求方与响应方的JSON解析工具类不相同时,响应方仍能通过适配器成功对第一字符串反序列化,实现请求方和响应方的不同JSON解析工具类的兼容。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及基于JSON的数据处理方法、装置、设备及计算机存储介质。
背景技术
随着计算机技术的发展,越来越多的技术(大数据、分布式、人工智能等)应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、通用性要求,也对基于JSON的数据处理技术提出了更高的要求。
FastJson作为阿里巴巴开源的一款JSON解析库,以其解析速度快、使用广泛以及功能完备等特点广受国内开发者追捧。但是在后期使用过程中会发现其源码质量较差,对JSON标准遵循也不严格,更重要的一点是接连被爆出安全漏洞,开发者被迫面临着频繁的更新版本修复漏洞的过程。实际上其解析速度快的特点同其他几款JSON解析库相比优势并不明显,但是开发者却要长期忍受着***安全无保障的痛苦,所以最好的方案就是弃用FastJson,更换为更安全的Gson或者Jackson。
现有的大部分更换JSON解析的方案都是通过直接修改JsonUtil工具类,把底层JSON构件一刀切式的切换到Gson或者Jackson,导致传统方案在分布式***中的机器上只能固定使用一种JSON解析器对报文进行解析,若要对分布式***中的分布式机器进行解析器的切换,需要大面积修改,甚至替换整个底层代码,工作量较大,而且,这种方案在灰度发布过程中可能会出现旧的使用FastJson解析器的机器和新的使用Gson解析器或者Jackson解析器的机器之间进行报文传输,由于两种JSON解析器序列化和反序列化处理过程有所不同,二者无法兼容,会导致服务请求解析失败,最终导致服务的不可用。
发明内容
本发明的主要目的在于提出一种基于JSON的数据处理方法、装置、设备及计算机存储介质,旨在解决切换JSON解析器导致的不兼容的技术问题。
为实现上述目的,本发明提供一种基于JSON的数据处理方法,所述基于JSON的数据处理方法包括如下步骤:
在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;
通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
可选地,所述根据预设选择器确定目标JSON解析工具类的步骤之前,还包括:
通过所述预设选择器中的定时轮询线程定时读取预设配置文件,根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值;
所述根据预设选择器确定目标JSON解析工具类的步骤包括:
获取所述预设选择器中的指针变量的值,根据所述指针变量的值确定目标JSON解析工具类。
可选地,所述通过所述预设选择器中的定时轮询线程定时读取预设配置文件的步骤之后,还包括:
若未读取到预设配置文件,则将所述响应方最近一次处理服务请求时使用的JSON解析工具类作为所述目标JSON解析工具类。
可选地,所述根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值的步骤之后,还包括:
若根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值发生改变,则将所述改变记录于日志中。
可选地,所述得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理的步骤之后,还包括:
获取响应方对所述第一Java对象进行处理得到的第二Java对象;
通过所述目标JSON解析工具类调用第二自定义适配器对所述第二Java对象进行序列化,得到第二JSON字符串,将所述第二字符串反馈给所述请求方。
可选地,所述在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类的步骤之前,还包括:
在接收到属性配置指令时,根据所述属性配置指令对所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容进行设置,使所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
可选地,所述基于JSON的数据处理方法应用于分布式***,所述分布式***包括所述响应方,所述基于JSON的数据处理方法,还包括:
接收第一远程传输脚本,根据所述第一远程传输脚本更新所述响应方的预设配置文件;
基于更新后的预设配置文件执行响应操作,并将响应结果记录于日志中,其中,在响应结果为成功响应时,所述分布式***对所述分布式***中的其他响应方的预设配置文件进行更新;在响应结果为异常响应时,所述响应方接收第二远程传输脚本,根据第二远程传输脚本回滚所述响应方的预设配置文件。
此外,为实现上述目的,本发明还提供一种基于JSON的数据处理装置,所述基于JSON的数据处理装置包括:
确定模块,用于在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;
处理模块,用于通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
此外,为实现上述目的,本发明还提供一种基于JSON的数据处理设备,所述基于JSON的数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于JSON的数据处理程序,所述基于JSON的数据处理程序被所述处理器执行时实现如上所述的基于JSON的数据处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机存储介质,所述计算机存储介质上存储有基于JSON的数据处理程序,所述基于JSON的数据处理程序被处理器执行时实现如上所述的基于JSON的数据处理方法的步骤。
本发明通过在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。从而即使在请求方与响应方的JSON解析工具类不相同的情况下,响应方依然能够通过适配器成功对第一JSON字符串进行反序列化,从而实现了请求方和响应方的不同JSON解析工具类的兼容,进而实现了在尽量少的修改代码层的前提下,解决切换JSON解析器所导致的不兼容问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的基于JSON的数据处理设备结构示意图;
图2为本发明基于JSON的数据处理方法第一实施例的流程示意图;
图3为本发明基于JSON的数据处理装置的装置模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的基于JSON的数据处理设备结构示意图。
本发明实施例基于JSON的数据处理设备可以是PC机或服务器设备,其上运行有Java虚拟机。
如图1所示,该基于JSON的数据处理设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的基于JSON的数据处理设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及基于JSON的数据处理程序。
在图1所示的基于JSON的数据处理设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于JSON的数据处理程序,并执行下述基于JSON的数据处理方法中的操作。
基于上述硬件结构,提出本发明基于JSON的数据处理方法实施例。
JSON:是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于阅读和编写的同时也易于解析和生成,并有效地提升网络传输效率。
参照图2,图2为本发明基于JSON的数据处理方法第一实施例的流程示意图,所述方法包括:
步骤S10,在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;
本实施例数据传输方法运用于基于JSON的数据处理设备中,基于JSON的数据处理设备可以是终端、机器人或者PC设备。
在现有技术中,大部分更换JSON解析的方案都是通过直接修改JsonUtil工具类,把底层JSON构件一刀切式的切换到Gson或者Jackson,导致传统方案在分布式***中的机器上只能固定使用一种JSON解析器对报文进行解析,若要对分布式***中的分布式机器进行解析器的切换,需要大面积修改,甚至替换整个底层代码,工作量较大,而且,这种方案在灰度发布过程中可能会出现旧的使用FastJson解析器的机器和新的使用Gson解析器或者Jackson解析器的机器之间进行报文传输,由于两种JSON解析器序列化和反序列化处理过程有所不同,二者无法兼容,会导致服务请求解析失败,最终导致服务的不可用
在此背景下,本实施例在接收到请求方的服务请求时,会根据预设选择器在可选的JSON解析工具类中确定目标JSON解析工具类,然后通过该工具类对应的第二适配器对服务请求包含的JSON字符串进行反序列化处理,由于该JSON字符串是由请求方通过第一适配器序列化得到的,而第一自定义适配器的属性配置内容与第二自定义适配器的属性配置内容是相同的,从而即使在请求方与响应方的JSON解析工具类不相同的情况下,响应方依然能够通过适配器成功对第一JSON字符串进行反序列化,从而实现了JSON解析工具类不同的请求方和响应方的兼容,进而实现了在尽量少的修改代码层的前提下,解决切换JSON解析器所导致的不兼容问题。
需要了解的是,当两个交互方在进行远程通信时,彼此之间可以发送各种类型的数据,但无论是何种类型的数据,都会以二进制序列的形式在网络上传送。
在本实施例中,发送方需要通过JSON解析器把Java对象转换为二进制序列(即JSON字符串),该过程为即为序列化(Serialization),才能在网络上传送;接收方则需要通过JSON解析器把接收到的二进制序列再恢复为对象,该过程即为反序列化(deserialization),才能对其进行处理。
在步骤S10之前,为运用方便,本实施例会将JSON解析器包装为JSON解析工具类,再通过JSON解析工具类来进行Java对象的序列化和JSON字符串的反序列化,不同的JSON解析器包装得到的不同的JSON解析工具类。例如,对FastJson解析器进行包装得到的JSON解析工具类为JsonUtil_FastJson,JsonUtil_FastJson的自定义适配器为FastJsonAdapter;对Gson解析器进行包装得到的JSON解析工具类为JsonUtil_Gson,JsonUtil_Gson的自定义适配器为GsonAdapter;对Jackson解析器进行包装得到的JSON解析工具类为JsonUtil_Jackson,JsonUtil_Jackson的自定义适配器为JacksonAdapter。
另外,在包装时还会为该JSON解析工具类设置对应的自定义适配器,开发人员能够通过自定义适配器分别自定义设置序列化和反序列化输出的数据格式,例如,对BigDecimal、BigInteger、Double、Long等多种数据格式的自定义处理,比如输出小数点后两位。
可以理解的是,本实施例中请求方和响应方的JSON解析器可以为FastJson、Gson和Jackson中的任一解析器,当然,还可以是其他JSON解析器,本实施例并不对JSON解析器的类型做具体限制。请求方和响应方的JSON解析器可以相同也可以不同。
需要说明的是无论是哪一种JSON解析工具类都包含了若干通用的序列化与反序列化的方法,例如:
String formatWithPretty(Object o);序列化对象;
String formatArgs(Object[]args);序列化数组对象;
String formatList(List<Object>list);序列化列表对象;
String formatPkg(Map<String,Object>request);序列化通讯报文;
<T>String formatEntity(T entity);序列化对象;
<T>String formatEntityWithClassName(T entity);序列化对象;
Map<String,Object>parse(String s);反序列化map对象;
Object[]parseArgs(String argsJsons);反序列化数组对象;
<T>T parseEntity(String s,Type type);反序列化对象,可以指定对象类型type;
List<Object>parseList(String s);反序列化列表对象。
以上只是对通用方法的举例,并不构成对通用方法的限制,开发人员可根据需要对通用方法进行设置,这些通用方法也可以是沿用现有的通用方法。可以理解的是,通用方法实际上是对序列化或反序列化结果的描述,但具体的执行是由选择器确定的目标JSON解析工具类来做的,每一种JSON解析工具类均能实现上述通用方法,但是实现的过程可能有差异。
进一步地,在步骤S10之前,还包括:
步骤a1,通过所述预设选择器中的定时轮询线程定时读取预设配置文件,根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值;
对应的,所述根据预设选择器确定目标JSON解析工具类的步骤,具体包括:
步骤a2,获取所述预设选择器中的指针变量的值,根据所述指针变量的值确定目标JSON解析工具类。
在本实施例中,预设选择器实际是一个JsonUtilFactory类,该选择器中包含一个定时轮询线程以及指针变量,定时轮询线程能够每隔N秒读取预设配置文件(json.properties),根据读取到的预设配置文件中的工具类标识设置指针变量的值。然后,在接收到请求方发送的服务请求时,选择器即可根据当前时刻指针变量的值确定目标JSON解析工具类其中,预设配置文件是由开发人员根据需要设置并上传至响应方的,通过设置预设配置文件,可以实现JSON解析工具类的动态切换。
例如,若在json.properties中识别到gson,则将指针变量的值设为指向JsonUtil_Gson,对应的,若此时接收到服务请求,则选择器将JsonUtil_Gson作为目标JSON解析工具类;若在json.properties中识别到FastJson,则将指针变量的值设为指向JsonUtil_FastJson,对应的,若此时接收到服务请求,则选择器将JsonUtil_FastJson作为目标JSON解析工具类;若在json.properties中识别到Jackson,则将指针变量的值设为指向JsonUtil_Jackson,对应的,若此时接收到服务请求,则选择器将JsonUtil_Jackson作为目标JSON解析工具类。
本实施例通过上述方案能够在不全局更改代码的前提下,实现JSON解析工具类的动态设置,而且由于不需全局更改代码,因而可实现JSON解析工具类的热切换,提升了JSON解析工具类的切换效率。
进一步地,若开发人员并未上传预设配置文件至响应方,说明此时开发人员并未对JSON解析工具类进行指定,则定时轮询线程将无法读取到预设配置文件中的工具类标识,当然,在其他读取异常情况下也可能会导致定时轮询线程无法读取到预设配置文件中的工具类标识,此时可以继续使用原有的JSON解析工具类,即将响应方最近一次处理服务请求时所使用的JSON解析工具类作为目标JSON解析工具类,避免因为未能读取到预设配置文件中的工具类标识而导致的服务异常。
进一步地,上述步骤a1之后,还包括:
若根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值发生改变,则将所述改变记录于日志中。
在本实施例中,在根据定时轮询线程读取到的工具类标识确定到指针变量的值之后,会将此次指针变量的值与上一次根据定时轮询线程读取到的工具类标识确定到指针变量的值进行比较,确定二者是否相同,若相同,说明在这段时间内开发人员并未对JSON解析工具类进行更改;若不同,说明在这段时间内开发人员并对预设配置文件中的工具类标识进行了更改,为方便开发人员查看此次JSON解析工具类的切换是否成功,可将这次指针的改变记录在日志中。例如,Current JSON Parser switched to Gson/Gastjson/Jackson。
步骤S20,通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
在本实施例中,无论是请求方还是响应方,在作为接收方接收到外部数据时和作为发送方向外部发送数据时,都需要对接收到的数据和发送的数据通过其当前的JSON解析工具类对应的自定义适配器,进行数据格式转换。
具体地,请求方在向响应方发送服务请求前,会先通过请求方的JSON解析工具类和第一自定义适配器对待处理Java对象进行序列化,且序列化得到第一JSON字符串的数据格式是按照第一自定义适配器中的属性配置内容确定的,然后,请求方将包含第一JSON字符串的服务请求发送至响应方,响应方在接收到服务请求后,会通过响应方的目标JSON解析工具类以及第二自定义适配器对第一JSON字符串进行反序列化,且反序列化得到的第一Java对象是按照第二自定义适配器中的属性配置内容确定的,以供响应方根据该第一Java对象对服务请求进行相应的处理。本实施例中,由于第一自定义适配器的属性配置内容与第二自定义适配器的属性配置内容一致,故响应方通过目标JSON解析工具类以及第二自定义适配器对第一JSON字符串进行反序列化得到的第一Java对象,与请求方的待处理Java对象是一致的,从而能够实现不同JSON解析工具类之间的通用和兼容。
进一步地,上述步骤S20之后,还包括:
步骤b1,获取响应方对所述第一Java对象进行处理得到的第二Java对象;
步骤b2,通过所述目标JSON解析工具类调用第二自定义适配器对所述第二Java对象进行序列化,得到第二JSON字符串,将所述第二字符串反馈给所述请求方。
在本实施例中,响应方在对第一Java对象进行处理后,得到第二Java对象,该第二Java对象即为对服务请求的处理结果,在响应方将该处理结果反馈给请求方之前,响应方先要通过目标JSON解析工具类以及第二自定义适配器对该第二Java对象进行序列化,得到对应的第二JSON字符串,然后再将第二字符串反馈给请求方。其中,由于第一自定义适配器的属性配置内容与第二自定义适配器的属性配置内容一致,故响应方通过第二自定义适配器序列化后的第二JSON字符串是能够被请求方识别的,从而能够进一步提升不同JSON解析工具类之间的通用性和兼容性。
在本实施例中,通过在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。从而即使在请求方与响应方的JSON解析工具类不相同的情况下,响应方依然能够通过适配器成功对第一JSON字符串进行反序列化,从而实现了请求方和响应方的不同JSON解析工具类的兼容,进而实现了在尽量少的修改代码层的前提下,解决切换JSON解析器所导致的不兼容问题。
进一步地,基于本发明基于JSON的数据处理方法第一实施例,提出本发明基于JSON的数据处理方法第二实施例。
所述基于JSON的数据处理方法应用于分布式***,所述分布式***包括所述响应方,所述基于JSON的数据处理方法,还包括:
步骤c1,接收第一远程传输脚本,根据所述第一远程传输脚本更新所述响应方的预设配置文件;
步骤c2,基于更新后的预设配置文件执行响应操作,并将响应结果记录于日志中,其中,在响应结果为成功响应时,所述分布式***对所述分布式***中的其他响应方的预设配置文件进行更新;在响应结果为异常响应时,所述响应方接收第二远程传输脚本,根据第二远程传输脚本回滚所述响应方的预设配置文件。
在本实施例中,引入了灰度发布的概念,所谓灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。在其上可以进行A/B testing,即让一部分用户继续用产品特性A,一部分用户开始用产品特性B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体***的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
在现有技术中,对于分布式***集群,其中可能包括成百上千个分布式节点,这些分布式节点共用一套JSON解析器,现有方案中对底层JSON构件一刀切式的切换到Gson或者Jackson的方案,若在解析器切换后出现Json报文兼容性问题,会导致整个分布式***不可用,对用户服务造成严重影响,再想要使用之前的解析器需要重新修改底层代码,这其中所需耗费的成本和造成的损失是不可估量的。
针对这种情况,本实施例通过灰度发布的方式将该基于JSON的数据处理方法应用于分布式***,分布式***中包括当前响应方。具体地,开发人员在需要对分布式***中的所有分布式节点进行JSON解析器切换时,可以预先编写一套包含预设配置文件的第一远程传输脚本,并将该脚本先发送给响应方,由响应方根据脚本中的预设配置文件更新响应方的预设配置文件,随后,响应方即可根据更新后的预设配置文件中的工具类标识确定新的目标JSON解析工具类,进而在处理服务请求时,通过调用该新的目标JSON解析工具类对其进行相应的响应操作,并将响应结果记录在日志中,以供分布式***根据日志中的响应结果确定灰度发布的范围。
具体地,若响应方的响应结果为成功响应,说明当前响应方并未因为解析器切换产生兼容性等异常问题,可扩大灰度发布的范围,即向分布式***中的其他响应方发送第一远程传输脚本,以对分布式***中的其他响应方的预设配置文件进行更新;若响应方的响应结果为异常响应,说明当前响应方因为解析器切换产生了兼容性等异常问题,若继续使用该解析器,可能会导致更加严重的影响,因此,此时分布式***会向响应方发送第二远程传输脚本,第二远程传输脚本中可以包括该响应方切换前的预设配置文件,也可以包括另一不会产生异常响应的解析器对应的配置文件,以供响应方根据第二远程传输脚本,对该响应方的解析器进行回滚或者切换至另一不会产生异常响应的解析器。
本实施例通过灰度发布的方式,能够将由于解析器切换带来的异常影响控制在小范围内,并结合前述实施例,能够实现对异常影响的快速应对,降低异常影响所造成的损失。
本发明还提供一种基于JSON的数据处理装置,参照图3,所述基于JSON的数据处理装置包括:
确定模块10,用于在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;
处理模块20,用于通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
可选地,所述确定模块,还用于:
通过所述预设选择器中的定时轮询线程定时读取预设配置文件,根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值;
获取所述预设选择器中的指针变量的值,根据所述指针变量的值确定目标JSON解析工具类。
可选地,所述确定模块,还用于:
若未读取到预设配置文件,则将所述响应方最近一次处理服务请求时使用的JSON解析工具类作为所述目标JSON解析工具类。
可选地,所述确定模块,还用于:
若根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值发生改变,则将所述改变记录于日志中。
可选地,所述基于JSON的数据处理装置,还包括:
对象获取模块,用于获取响应方对所述第一Java对象进行处理得到的第二Java对象;
序列化模块,用于通过所述目标JSON解析工具类调用第二自定义适配器对所述第二Java对象进行序列化,得到第二JSON字符串,将所述第二字符串反馈给所述请求方。
可选地,所述基于JSON的数据处理装置,还包括:
设置模块,用于在接收到属性配置指令时,根据所述属性配置指令对所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容进行设置,使所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
可选地,所述基于JSON的数据处理装置,还包括:
接收模块,用于接收第一远程传输脚本,根据所述第一远程传输脚本更新所述响应方的预设配置文件;
执行模块,用于基于更新后的预设配置文件执行响应操作,并将响应结果记录于日志中,其中,在响应结果为成功响应时,所述分布式***对所述分布式***中的其他响应方的预设配置文件进行更新;在响应结果为异常响应时,所述响应方接收第二远程传输脚本,根据第二远程传输脚本回滚所述响应方的预设配置文件。
上述各程序单元所执行的方法可参照本发明基于JSON的数据处理方法各个实施例,此处不再赘述。
本发明还提供一种基于JSON的数据处理设备,基于JSON的数据处理设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的基于JSON的数据处理程序,基于JSON的数据处理程序被处理器执行时所实现的方法可参照本发明基于JSON的数据处理方法各个实施例,此处不再赘述。
本发明还提供一种计算机存储介质。
本发明计算机存储介质上存储有基于JSON的数据处理程序,所述基于JSON的数据处理程序被处理器执行时实现如上所述的基于JSON的数据处理方法的步骤。
其中,在所述处理器上运行的基于JSON的数据处理程序被执行时所实现的方法可参照本发明基于JSON的数据处理方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于JSON的数据处理方法,其特征在于,所述基于JSON的数据处理方法包括如下步骤:
在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;
通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
2.如权利要求1所述的基于JSON的数据处理方法,其特征在于,所述根据预设选择器确定目标JSON解析工具类的步骤之前,还包括:
通过所述预设选择器中的定时轮询线程定时读取预设配置文件,根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值;
所述根据预设选择器确定目标JSON解析工具类的步骤包括:
获取所述预设选择器中的指针变量的值,根据所述指针变量的值确定目标JSON解析工具类。
3.如权利要求2所述的基于JSON的数据处理方法,其特征在于,所述通过所述预设选择器中的定时轮询线程定时读取预设配置文件的步骤之后,还包括:
若未读取到预设配置文件,则将所述响应方最近一次处理服务请求时使用的JSON解析工具类作为所述目标JSON解析工具类。
4.如权利要求2所述的基于JSON的数据处理方法,其特征在于,所述根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值的步骤之后,还包括:
若根据预设配置文件内的工具类标识确定所述预设选择器中的指针变量的值发生改变,则将所述改变记录于日志中。
5.如权利要求1所述的基于JSON的数据处理方法,其特征在于,所述得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理的步骤之后,还包括:
获取响应方对所述第一Java对象进行处理得到的第二Java对象;
通过所述目标JSON解析工具类调用第二自定义适配器对所述第二Java对象进行序列化,得到第二JSON字符串,将所述第二字符串反馈给所述请求方。
6.如权利要求1所述的基于JSON的数据处理方法,其特征在于,所述在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类的步骤之前,还包括:
在接收到属性配置指令时,根据所述属性配置指令对所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容进行设置,使所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
7.如权利要求1至6任一项所述的基于JSON的数据处理方法,其特征在于,所述基于JSON的数据处理方法应用于分布式***,所述分布式***包括所述响应方,所述基于JSON的数据处理方法,还包括:
接收第一远程传输脚本,根据所述第一远程传输脚本更新所述响应方的预设配置文件;
基于更新后的预设配置文件执行响应操作,并将响应结果记录于日志中,其中,在响应结果为成功响应时,所述分布式***对所述分布式***中的其他响应方的预设配置文件进行更新;在响应结果为异常响应时,所述分布式***向所述响应方发送第二远程传输脚本,以供所述响应方根据第二远程传输脚本回滚所述响应方的预设配置文件。
8.一种基于JSON的数据处理装置,其特征在于,所述基于JSON的数据处理装置包括:
确定模块,用于在接收到请求方发送的服务请求时,根据预设选择器确定目标JSON解析工具类,其中,所述预设选择器中包括至少一种JSON解析工具类;所述服务请求中包括由所述请求方根据第一自定义适配器得到的第一JSON字符串;
处理模块,用于通过所述目标JSON解析工具类调用对应的第二自定义适配器对所述第一JSON字符串进行反序列化,得到第一Java对象,以根据所述第一Java对象对所述服务请求进行处理,其中,所述第一自定义适配器的属性配置内容与所述第二自定义适配器的属性配置内容一致。
9.一种基于JSON的数据处理设备,其特征在于,所述基于JSON的数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于JSON的数据处理程序,所述基于JSON的数据处理程序被所述处理器执行时实现如权利要求1至7中任一项所述的基于JSON的数据处理方法的步骤。
10.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有基于JSON的数据处理程序,所述基于JSON的数据处理程序被处理器执行时实现如权利要求1至7中任一项所述的基于JSON的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011413471.7A CN112433709A (zh) | 2020-12-03 | 2020-12-03 | 基于json的数据处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011413471.7A CN112433709A (zh) | 2020-12-03 | 2020-12-03 | 基于json的数据处理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112433709A true CN112433709A (zh) | 2021-03-02 |
Family
ID=74691258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011413471.7A Pending CN112433709A (zh) | 2020-12-03 | 2020-12-03 | 基于json的数据处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112433709A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114818656A (zh) * | 2022-06-30 | 2022-07-29 | 深圳华锐分布式技术股份有限公司 | 基于灰度升级的二进制文件解析方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
CN110968560A (zh) * | 2018-09-29 | 2020-04-07 | 北京国双科技有限公司 | 日志采集器的配置方法、装置及*** |
WO2020215558A1 (zh) * | 2019-04-26 | 2020-10-29 | 平安科技(深圳)有限公司 | 数据存储方法、数据查询方法、装置、设备及存储介质 |
-
2020
- 2020-12-03 CN CN202011413471.7A patent/CN112433709A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542541A (zh) * | 2017-09-21 | 2019-03-29 | 北京国双科技有限公司 | 反序列化方法及装置 |
CN110968560A (zh) * | 2018-09-29 | 2020-04-07 | 北京国双科技有限公司 | 日志采集器的配置方法、装置及*** |
WO2020215558A1 (zh) * | 2019-04-26 | 2020-10-29 | 平安科技(深圳)有限公司 | 数据存储方法、数据查询方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
张涛;黄强;毛磊雅;高兴;: "一个基于JSON的对象序列化算法", 计算机工程与应用, no. 15, 21 May 2007 (2007-05-21) * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114818656A (zh) * | 2022-06-30 | 2022-07-29 | 深圳华锐分布式技术股份有限公司 | 基于灰度升级的二进制文件解析方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111083225B (zh) | 在物联网平台中的数据处理方法、装置及物联网平台 | |
CN111708702A (zh) | 模拟测试方法、客户端、服务端、***与可读存储介质 | |
CN110569250B (zh) | 一种物联网网元的解析库的管理方法及装置 | |
CN111444088B (zh) | 一种接口测试的测试用例调用方法和装置 | |
CN110532182B (zh) | 一种虚拟化平台的自动化测试方法及装置 | |
CN108664291A (zh) | 容器组的构建方法和装置 | |
CN111694620B (zh) | 第三方业务的交互方法、装置、设备及计算机存储介质 | |
US20140344447A1 (en) | Method and apparatus for executing application | |
CN113704337A (zh) | 一种基于驱动动态加载的元数据采集方法与*** | |
CN112433709A (zh) | 基于json的数据处理方法、装置、设备及介质 | |
CN109408376B (zh) | 一种配置数据的生成方法、装置、设备及存储介质 | |
CN112346980B (zh) | 软件性能测试方法、***和可读存储介质 | |
CN117608845A (zh) | 任务批处理方法、装置、终端设备以及存储介质 | |
WO2021093672A1 (zh) | 外部***的嵌入方法、工作流***、设备及计算机可读存储介质 | |
CN113742408B (zh) | 基于Protobuf协议动态解析的数据交互方法 | |
CN110839079A (zh) | 工作流***中的bi节点执行方法、装置、设备及介质 | |
CN112799930A (zh) | 一种分布式压力测试方法及*** | |
CN111984679A (zh) | 硬件加速数据库的访问方法、装置、主机、***及介质 | |
CN112346979A (zh) | 软件性能测试方法、***和可读存储介质 | |
CN116132534B (zh) | 业务请求的存储方法、装置、设备及存储介质 | |
CN114915549B (zh) | 指令查询方法、装置、设备及存储介质 | |
WO2022022446A1 (zh) | 一种打印日志的方法、装置及*** | |
WO2023029955A1 (zh) | 打印动态日志的方法和电子设备 | |
CN112799710B (zh) | 一种模型发布***及模型发布方法 | |
CN116048781A (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 |