CN117370398A - 一种变更数据的比对方法及装置 - Google Patents
一种变更数据的比对方法及装置 Download PDFInfo
- Publication number
- CN117370398A CN117370398A CN202311525521.4A CN202311525521A CN117370398A CN 117370398 A CN117370398 A CN 117370398A CN 202311525521 A CN202311525521 A CN 202311525521A CN 117370398 A CN117370398 A CN 117370398A
- Authority
- CN
- China
- Prior art keywords
- data
- comparison
- type
- format
- change
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000004806 packaging method and process Methods 0.000 claims description 15
- 238000005538 encapsulation Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种变更数据的比对方法及装置,所述方法包括:在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象;根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值;采用所述比对参数值进行数据比对,得到比对结果。本发明可以在获取JSON字符串格式的变更数据后,将变更数据转换为JSONObject对象;根据JSONObject对象获取变更数据中数据格式为非引用类型的比对参数值;在采用比对参数值进行数据比对,得到比对结果。整个过程无需调用不同工具,按照单一格式进行处理,能大大简化处理流程,缩短处理时长,并且利用比对参数值进行数据比对能有效提升比对的精度,以满足数据比对的需求。
Description
技术领域
本发明涉及数据比对的技术领域,尤其涉及一种变更数据的比对方法及装置。
背景技术
JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式,在日常软件开发中应用较为普遍。无论是开发人员还是测试人员,都需要很频繁对这种格式的数据进行比对、校验。
在java语言开发环境下,现有的数据比对技术都是调用一些对比工具(例如Beyond Compare、Diff等)进行简单数据类型(例如,单个对象、单个字段等)进行比对。但是对于一些较为复杂的JSON数据(例如,无序的JSON数组(即JSONArray)或者需要比对一个对象并且该对象中嵌套数组和引用类型无法简单快捷的完成比对),需要调用多个工具进行处理,不但耗时长,且工具的比对误差会逐级放大,导致比对结果的准确性较低,难以满足现有的数据比对需求。
发明内容
本发明提出一种变更数据的比对方法及装置,所述方法可以解决比对复杂的JSON数据时耗时长且准确率低的技术问题。
本发明实施例的第一方面提供了一种变更数据的比对方法,所述方法包括:
在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象;
根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值;
采用所述比对参数值进行数据比对,得到比对结果。
在第一方面的一种可能的实现方式中,所述获取JSON字符串格式的变更数据,包括:
在接收初始数据后,确定所述初始数据的数据格式;
若所述数据格式为JSON字符串格式,则以所述初始数据为变更数据;
若所述数据格式为非JSON字符串格式,则将所述初始数据转换为JSON字符串格式得到变更数据,所述非JSON字符串格式包括:Map对象传入的数据格式或者泛型传入的数据格式。
在第一方面的一种可能的实现方式中,所述将所述变更数据转换为JSONObject对象,包括:
确定所述变更数据的数据类型;
若所述变更数据的数据类型是数组类型,则将所述变更数据转换为JSONOArray对象后,遍历所述JSONOArray对象的数组得到JSONObject对象;
若所述变更数据的数据类型是对象类型,则将所述变更数据转换为JSONObject对象。
在第一方面的一种可能的实现方式中,所述确定所述变更数据的数据类型,包括:
利用startWith方法截取所述变更数据的起始字符串;
若所述起始字符串为方括号,则确定所述变更数据的数据类型是数组类型;
若所述起始字符串为大括号,则确定所述变更数据的数据类型是对象类型。
在第一方面的一种可能的实现方式中,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,包括:
获取所述JSONObject对象对应的对象key值后,通过遍历所述对象key值得到所述JSONObject对象比对前后数据的value值;
若通过封装fieldType方法确定所述value值的数量类型为非引用数据类型后,将所述value值设置在所述JSONObject对象中,得到比对参数值。
在第一方面的一种可能的实现方式中,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,还包括:
若通过封装fieldType方法确定所述value值的数量类型为引用数据类型,则调用compareByJsonStr方法确定所述变更数据的数据类型。
在第一方面的一种可能的实现方式中,在所述采用所述比对参数值进行数据比对,得到比对结果的步骤后,所述方法还包括:
获取所述比对结果的比对内容参数;
若所述对内容参数为simple,则从所述比对结果中提取差异数据,并按照所述simple对应的输出格式对所述比对结果和所述差异数据进行封装;
若所述对内容参数为details,则从所述比对结果提取发生更改的修改参数,并所述修改参数的输出格式对所述比对结果进行封装。
本发明实施例的第二方面提供了一种变更数据的比对装置,所述装置包括:
数据转换模块,用于在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象;
数据获取模块,用于根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值;
数据比对模块,用于采用所述比对参数值进行数据比对,得到比对结果。
在第二方面的一种可能的实现方式中,所述获取JSON字符串格式的变更数据,包括:
在接收初始数据后,确定所述初始数据的数据格式;
若所述数据格式为JSON字符串格式,则以所述初始数据为变更数据;
若所述数据格式为非JSON字符串格式,则将所述初始数据转换为JSON字符串格式得到变更数据,所述非JSON字符串格式包括:Map对象传入的数据格式或者泛型传入的数据格式。
在第二方面的一种可能的实现方式中,所述将所述变更数据转换为JSONObject对象,包括:
确定所述变更数据的数据类型;
若所述变更数据的数据类型是数组类型,则将所述变更数据转换为JSONOArray对象后,遍历所述JSONOArray对象的数组得到JSONObject对象;
若所述变更数据的数据类型是对象类型,则将所述变更数据转换为JSONObject对象。
在第二方面的一种可能的实现方式中,所述确定所述变更数据的数据类型,包括:
利用startWith方法截取所述变更数据的起始字符串;
若所述起始字符串为方括号,则确定所述变更数据的数据类型是数组类型;
若所述起始字符串为大括号,则确定所述变更数据的数据类型是对象类型。
在第二方面的一种可能的实现方式中,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,包括:
获取所述JSONObject对象对应的对象key值后,通过遍历所述对象key值得到所述JSONObject对象比对前后数据的value值;
若通过封装fieldType方法确定所述value值的数量类型为非引用数据类型后,将所述value值设置在所述JSONObject对象中,得到比对参数值。
在第二方面的一种可能的实现方式中,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,还包括:
若通过封装fieldType方法确定所述value值的数量类型为引用数据类型,则调用compareByJsonStr方法确定所述变更数据的数据类型。
在第二方面的一种可能的实现方式中,所述装置还包括:
获取参数模块,用于获取所述比对结果的比对内容参数;
输出封装模块,用于若所述对内容参数为simple,则从所述比对结果中提取差异数据,并按照所述simple对应的输出格式对所述比对结果和所述差异数据进行封装;
参数封装模块,用于若所述对内容参数为details,则从所述比对结果提取发生更改的修改参数,并所述修改参数的输出格式对所述比对结果进行封装。
相比于现有技术,本发明实施例提供的一种变更数据的比对方法及装置,其有益效果在于:本发明可以在获取JSON字符串格式的变更数据后,将变更数据转换为JSONObject对象;根据JSONObject对象获取变更数据中数据格式为非引用类型的比对参数值;在采用比对参数值进行数据比对,得到比对结果。整个过程无需调用不同工具,按照单一格式进行处理,能大大简化处理流程,缩短处理时长,并且利用比对参数值进行数据比对能有效提升比对的精度,以满足数据比对的需求。
附图说明
图1是本发明一实施例提供的一种变更数据的比对方法的流程示意图;
图2是本发明一实施例提供的一种变更数据的比对方法的操作流程图;
图3是本发明一实施例提供的一种变更数据的比对装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决上述问题,下面将通过以下具体的实施例对本申请实施例提供的一种变更数据的比对方法进行详细介绍和说明。
参照图1,示出了本发明一实施例提供的一种变更数据的比对方法的流程示意图。
其中,作为示例的,所述变更数据的比对方法,可以包括:
S11、在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象。
在一实施例中,接收的变更数据可以包括两个待比对的数据,例如,数据A和数据B,且接收的两个均是JSON字符串格式的数据。
在接收两个数据后,可以将两个数据转换为JSONObject对象。在一实现方式中,可以通过遍历两个数据,分别得到每个待比对数据的JSONObject对象。
在一应用场景中,可能接收了不同格式或不同类型的数据,为了能满足不同输入格式,其中,作为示例的,所述获取JSON字符串格式的变更数据的步骤可以包括以下子步骤:
S111、在接收初始数据后,确定所述初始数据的数据格式。
S112、若所述数据格式为JSON字符串格式,则以所述初始数据为变更数据。
S113、若所述数据格式为非JSON字符串格式,则将所述初始数据转换为JSON字符串格式得到变更数据,所述非JSON字符串格式包括:Map对象传入的数据格式或者泛型传入的数据格式。
具体,接收的初始数据就可以包括两个待比对的数据,例如,数据A和数据B。在接收初始数据后,确定两个初始数据的数据格式,一般来说,两个数据的数据格式是相同的。
如果两个数据的数据格式是JSON字符串格式,则以所述初始数据为变更数据。如果两个数据的数据格式不是JSON字符串格式,就可以将初始数据转换为JSON字符串格式的数据,从而得到变更数据。
其中,非JSON字符串格式包括:Map对象传入的数据格式或者泛型传入的数据格式。
在一实施例中,上述方式包含了三种数据的输入,第一种通过JSON字符串传入的方式进行数据比对,第二种通过Map对象传入进行数据比对,第三种通过泛型方式传入进行数据比对。在实际应用时,用户根据实际需要选择比对方式,通过调用不同方法实现比对。
在一实现方式中,在接收Map对象的数据后,可以先通过new JSONObject(map)的方式将Map类型转换为JSONOject类型。
其中,作为示例的,所述将所述变更数据转换为JSONObject对象的步骤可以包括以下子步骤:
S114、确定所述变更数据的数据类型。
在一实施例中,在获取变更数据后,可以判断传入的JSON串的变更数据是数组类型还是对象类型,从而可以根据不同的数据类型生成对应的JSONObject对象。
其中,作为示例的,所述确定所述变更数据的数据类型的步骤可以包括以下子步骤:
S1141、利用startWith方法截取所述变更数据的起始字符串。
S1142、若所述起始字符串为方括号,则确定所述变更数据的数据类型是数组类型。
S1143、若所述起始字符串为大括号,则确定所述变更数据的数据类型是对象类型。
在一具体的实现方式中,判断方式可以通过将startWith方法截取变更数据的起始字符串,即变更数据的字符串开始的字符。
如果获取到的字符为“[”,则表示该变更数据的JSON串为数组类型;如果获取到的字符为“{”,则表示该变更数据的JSON串为对象类型。
S115、若所述变更数据的数据类型是数组类型,则将所述变更数据转换为JSONOArray对象后,遍历所述JSONOArray对象的数组得到JSONObject对象。
如果变更数据的数据类型是数组类型,可以将传入的参数beforeData和afterData比对数据JSON串转换为JSONArray对象,接着可以使用for(int i=0;i<JSONArray.length;i++)的遍历方法,对JSONArray进行遍历,然后可以通过JSONArray[i]的方式获取每个JSONObject对象,最后可以通过上述方式遍历获取beforeData和afterData的JSONObject对象。
S116、若所述变更数据的数据类型是对象类型,则将所述变更数据转换为JSONObject对象。
如果变更数据的数据类型是对象类型,就可以直接将两个待比对的变更数据转换为JSONObject对象。
S12、根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值。
在一实施例中,在得到JSONObject对象后,可以根据JSONObject对象在变更数据中数据格式为非引用类型的比对参数值,该比对参数值可以是指数据字段的具体值。
在一可选的实施例中,步骤S12可以包括以下子步骤:
S121、获取所述JSONObject对象对应的对象key值后,通过遍历所述对象key值得到所述JSONObject对象比对前后数据的value值。
S122、若通过封装fieldType方法确定所述value值的数量类型为非引用数据类型后,将所述value值设置在所述JSONObject对象中,得到比对参数值。
S123、若通过封装fieldType方法确定所述value值的数量类型为引用数据类型,则调用compareByJsonStr方法确定所述变更数据的数据类型。
在一实施例中,在获取JSONObject对象后,可以定义一个JSONObject对象用于记录比对结果,其中,比对的每个字段都封装为一个对象设置到JSONObject对象中,每个字段的对象属性为newVal和oldVal,分别表示为对比后的新值,和对比前的旧值。
对获取到的每个JSONObject对象,可以获取每个JSONObject对象其中的key值,然后遍历key,通过JSONObject.get(key)获取到比对前后数据的value值,先判断获取到的value值数据类型是基础数据类型还是引用数据类型。
数据类型判断通过封装的方法fieldType(Object value)方法进行判断,该方法通过instanceOf关键字罗列个各种数据类型的判断,如判断value是否是字符串类型使用if(value instanceOf String)进行判断等,判断出是否是基础类型后返回true和false,true表示是基础数据类型,false表示非基础数据类型。
如果是基础数据类型将值设置到比对结果JOSNObject对象中,如果是引用数据类型则再次调用compareByJsonStr方法将数据传入再次进行比对,以完成数据的递归调用。
S13、采用所述比对参数值进行数据比对,得到比对结果。
在获取两个数据的比对参数值后,可以比较两个数值是否相同,得到两个数据的比较结果。
到此即完成了比对操作,可以返回比对结果并存储至在先步骤设置的result对象中。同理前面是对传入参数为JSONArray数组类型的处理,如果传入参数为JSONObject对象,则直接获取key,然后遍历key根据key获取value值进行比对,其它执行流程和上述一致即可。
需要说明的是,对于Map对象输入的数据,后续进行数据比对时,可以通过调用compareByMap(Map beforeMap,Map afterMap)方法完成比对。
在接收该对象的数据后,可以先通过new JSONObject(map)的方式将Map类型转换为JSONOject类型,然后调用上述的comareByJsonStr方法完成数据比对,重新封装一个传入Map的接口是为了调用者方便调用,由方法内部进行数据类型转换。
对于自定义泛型输入的数据,在进行数据比对时,可以通过调用CompareByObejct(T beforeData,T afterData)方法完成比对,根据传入的泛型,将其转换为JSONObject数据类型然后调用CompareByJsonStr方法实现数据比对。
因为调用方的数据类型是多变的,无法确定调用方的数据类型是怎么样的,所以本发明提供多种方法给调用者自行选择调用。
在一实施例中,在完成比对后,需要封装各个比对结果,其中,作为示例的,所述方法还可以包括:
S14、获取所述比对结果的比对内容参数。
S15、若所述对内容参数为simple,则从所述比对结果中提取差异数据,并按照所述simple对应的输出格式对所述比对结果和所述差异数据进行封装。
S16、若所述对内容参数为details,则从所述比对结果提取发生更改的修改参数,并所述修改参数的输出格式对所述比对结果进行封装。
比对结果封装,比对过程完成后会自动根据传入的比对结果参数进行比对结果封装,通过定义一个JSONObejct的类型result对象,在比对遍历获取key进行比对时,就将比对的结果设置到result对象中,如:比对name字段,则设置到result中的参数为,result.put(‘name’,new JSONObject),put的中的JSONObject的参数报过newVal和oldVal,即比对后的新旧数据,如此完成比对结果的封装。
在具体操作中,比对结果的参数可以包括:比对内容、输出格式,其中比对内容参数包括simple和details,如果传入的是simple,则只从比对结果JOSNObject对象中获取是否存在差异,如果存在比对内容为true否则为false;如果传入的是details,则从比对结果JOSNObject对象中获取详细比对结果,包括具体哪些内容发生变更。
在封装时,比对结果参数输出格式,主要包括json对象、Boolean、String等输出格式。
如果比对内容参数为simple,则比对输出格式自动为Boolean,不在对输出格式进行判断。
如果比对内容参数为details,则判断比对结果参数,并从比对结果JOSNObject对象中根据比对结果格式进行比对结果封装。
参照图2,示出了本发明一实施例提供的一种变更数据的比对方法的操作流程图。
具体地,所述变更数据的比对方法的操作可以包括如下步骤:
第一步,选择数据比对方法,包括JOSN字符串比对方式、Map对象比对方式和自定义泛型数据比对。
第二步,将每一种数据比对方法传入需要比对的数据转换成JOSN字符串A、B。
第三步,判断比对数据是否数组类型,若是数组类型,则将比对数据转换成JSONArray对象,并进行遍历得到JOSNObject对象;若不是数组类型,则直接将转换成JOSNObject对象。
第四步,JOSNObject对象的返回结果对象result。
第五步,根据JOSNObject获取数据A和数据B入参需要比对的key。
第六步,再根据key获取数据A和数据B两个比对参数的值。
第七步,判断获取到的值的数据类型是基本数据类型还是引用数据类型。
第八步,若是基本数据类型,则将参数设置在result中,key作为result中JOSNObject的key,value使用JOSNObject对象设置新newVal和oldVal两个值,表示比对后的新旧参数。
本发明整个操作流程的调用过程简单方便,比对过程无需参与(只需输出比对内容和设置想要的比对结果)。
而且本发明支持多种数据类型参数比对;同时还支持返回比对结果类型自定义。
在本实施例中,本发明实施例提供了一种变更数据的比对方法,其有益效果在于:本发明可以在获取JSON字符串格式的变更数据后,将变更数据转换为JSONObject对象;根据JSONObject对象获取变更数据中数据格式为非引用类型的比对参数值;在采用比对参数值进行数据比对,得到比对结果。整个过程无需调用不同工具,按照单一格式进行处理,能大大简化处理流程,缩短处理时长,并且利用比对参数值进行数据比对能有效提升比对的精度,以满足数据比对的需求。
本发明实施例还提供了一种变更数据的比对装置,参见图3,示出了本发明一实施例提供的一种变更数据的比对装置的结构示意图。
其中,作为示例的,所述变更数据的比对装置可以包括:
数据转换模块301,用于在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象;
数据获取模块302,用于根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值;
数据比对模块303,用于采用所述比对参数值进行数据比对,得到比对结果。
可选地,所述获取JSON字符串格式的变更数据,包括:
在接收初始数据后,确定所述初始数据的数据格式;
若所述数据格式为JSON字符串格式,则以所述初始数据为变更数据;
若所述数据格式为非JSON字符串格式,则将所述初始数据转换为JSON字符串格式得到变更数据,所述非JSON字符串格式包括:Map对象传入的数据格式或者泛型传入的数据格式。
可选地,所述将所述变更数据转换为JSONObject对象,包括:
确定所述变更数据的数据类型;
若所述变更数据的数据类型是数组类型,则将所述变更数据转换为JSONOArray对象后,遍历所述JSONOArray对象的数组得到JSONObject对象;
若所述变更数据的数据类型是对象类型,则将所述变更数据转换为JSONObject对象。
可选地,所述确定所述变更数据的数据类型,包括:
利用startWith方法截取所述变更数据的起始字符串;
若所述起始字符串为方括号,则确定所述变更数据的数据类型是数组类型;
若所述起始字符串为大括号,则确定所述变更数据的数据类型是对象类型。
可选地,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,包括:
获取所述JSONObject对象对应的对象key值后,通过遍历所述对象key值得到所述JSONObject对象比对前后数据的value值;
若通过封装fieldType方法确定所述value值的数量类型为非引用数据类型后,将所述value值设置在所述JSONObject对象中,得到比对参数值。
可选地,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,还包括:
若通过封装fieldType方法确定所述value值的数量类型为引用数据类型,则调用compareByJsonStr方法确定所述变更数据的数据类型。
可选地,所述装置还包括:
获取参数模块,用于获取所述比对结果的比对内容参数;
输出封装模块,用于若所述对内容参数为simple,则从所述比对结果中提取差异数据,并按照所述simple对应的输出格式对所述比对结果和所述差异数据进行封装;
参数封装模块,用于若所述对内容参数为details,则从所述比对结果提取发生更改的修改参数,并所述修改参数的输出格式对所述比对结果进行封装。
所属技术领域的技术人员可以清楚地了解到,为方便的描述和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
进一步的,本申请实施例还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的变更数据的比对方法。
进一步的,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行如上述实施例所述的变更数据的比对方法。
本领域内的技术人员应明白,本申请的实施例还可提供包括计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、装置和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种变更数据的比对方法,其特征在于,所述方法包括:
在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象;
根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值;
采用所述比对参数值进行数据比对,得到比对结果。
2.根据权利要求1所述的变更数据的比对方法,其特征在于,所述获取JSON字符串格式的变更数据,包括:
在接收初始数据后,确定所述初始数据的数据格式;
若所述数据格式为JSON字符串格式,则以所述初始数据为变更数据;
若所述数据格式为非JSON字符串格式,则将所述初始数据转换为JSON字符串格式得到变更数据,所述非JSON字符串格式包括:Map对象传入的数据格式或者泛型传入的数据格式。
3.根据权利要求1所述的变更数据的比对方法,其特征在于,所述将所述变更数据转换为JSONObject对象,包括:
确定所述变更数据的数据类型;
若所述变更数据的数据类型是数组类型,则将所述变更数据转换为JSONOArray对象后,遍历所述JSONOArray对象的数组得到JSONObject对象;
若所述变更数据的数据类型是对象类型,则将所述变更数据转换为JSONObject对象。
4.根据权利要求3所述的变更数据的比对方法,其特征在于,所述确定所述变更数据的数据类型,包括:
利用startWith方法截取所述变更数据的起始字符串;
若所述起始字符串为方括号,则确定所述变更数据的数据类型是数组类型;
若所述起始字符串为大括号,则确定所述变更数据的数据类型是对象类型。
5.根据权利要求1所述的变更数据的比对方法,其特征在于,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,包括:
获取所述JSONObject对象对应的对象key值后,通过遍历所述对象key值得到所述JSONObject对象比对前后数据的value值;
若通过封装fieldType方法确定所述value值的数量类型为非引用数据类型后,将所述value值设置在所述JSONObject对象中,得到比对参数值。
6.根据权利要求5所述的变更数据的比对方法,其特征在于,所述根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值,还包括:
若通过封装fieldType方法确定所述value值的数量类型为引用数据类型,则调用compareByJsonStr方法确定所述变更数据的数据类型。
7.根据权利要求1-6任意一项所述的变更数据的比对方法,其特征在于,在所述采用所述比对参数值进行数据比对,得到比对结果的步骤后,所述方法还包括:
获取所述比对结果的比对内容参数;
若所述对内容参数为simple,则从所述比对结果中提取差异数据,并按照所述simple对应的输出格式对所述比对结果和所述差异数据进行封装;
若所述对内容参数为details,则从所述比对结果提取发生更改的修改参数,并所述修改参数的输出格式对所述比对结果进行封装。
8.一种变更数据的比对装置,其特征在于,所述装置包括:
数据转换模块,用于在获取JSON字符串格式的变更数据后,将所述变更数据转换为JSONObject对象;
数据获取模块,用于根据所述JSONObject对象获取所述变更数据中数据格式为非引用类型的比对参数值;
数据比对模块,用于采用所述比对参数值进行数据比对,得到比对结果。
9.一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任意一项所述的变更数据的比对方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行如权利要求1-7任意一项所述的变更数据的比对方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311525521.4A CN117370398B (zh) | 2023-11-15 | 一种变更数据的比对方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311525521.4A CN117370398B (zh) | 2023-11-15 | 一种变更数据的比对方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117370398A true CN117370398A (zh) | 2024-01-09 |
CN117370398B CN117370398B (zh) | 2024-05-28 |
Family
ID=
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733689A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种json文本的比对方法和装置 |
CN110162510A (zh) * | 2019-04-26 | 2019-08-23 | 平安普惠企业管理有限公司 | 文本对比方法、装置、计算机设备及存储介质 |
CN112711419A (zh) * | 2019-10-24 | 2021-04-27 | 马上消费金融股份有限公司 | 一种数据比对方法及装置 |
CN113190220A (zh) * | 2021-06-30 | 2021-07-30 | 南京冰鉴信息科技有限公司 | Json文件差异化对比方法及装置 |
WO2021197183A1 (zh) * | 2020-03-30 | 2021-10-07 | 阿里巴巴集团控股有限公司 | 路径识别方法、装置和系统 |
CN114330278A (zh) * | 2021-12-23 | 2022-04-12 | 上海万物新生环保科技集团有限公司 | 一种判断返回数据一致性的方法及设备 |
WO2023273218A1 (zh) * | 2021-06-30 | 2023-01-05 | 深圳前海微众银行股份有限公司 | Json报文的核对方法和json报文的核对装置 |
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733689A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 一种json文本的比对方法和装置 |
CN110162510A (zh) * | 2019-04-26 | 2019-08-23 | 平安普惠企业管理有限公司 | 文本对比方法、装置、计算机设备及存储介质 |
CN112711419A (zh) * | 2019-10-24 | 2021-04-27 | 马上消费金融股份有限公司 | 一种数据比对方法及装置 |
WO2021197183A1 (zh) * | 2020-03-30 | 2021-10-07 | 阿里巴巴集团控股有限公司 | 路径识别方法、装置和系统 |
CN113190220A (zh) * | 2021-06-30 | 2021-07-30 | 南京冰鉴信息科技有限公司 | Json文件差异化对比方法及装置 |
WO2023273218A1 (zh) * | 2021-06-30 | 2023-01-05 | 深圳前海微众银行股份有限公司 | Json报文的核对方法和json报文的核对装置 |
CN114330278A (zh) * | 2021-12-23 | 2022-04-12 | 上海万物新生环保科技集团有限公司 | 一种判断返回数据一致性的方法及设备 |
Non-Patent Citations (1)
Title |
---|
刘立;赵建军;张锦鹏;余进;: "JSON与XML动态转换研究及应用", 软件导刊, no. 11, 5 September 2018 (2018-09-05) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190129734A1 (en) | Data collection workflow extension | |
AU2018310287A1 (en) | Smart contract processing method and apparatus | |
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
CN110244941B (zh) | 任务开发方法、装置、电子设备及计算机可读存储介质 | |
US20140173559A1 (en) | Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files | |
CN111459801B (zh) | Rsf远程服务接口功能测试方法、模块、计算机设备和存储介质 | |
CN111443901B (zh) | 一种基于Java反射的业务扩展方法及装置 | |
CN111209326B (zh) | 数据查询方法、装置、电子设备和存储介质 | |
CN115016784B (zh) | 低代码应用复用方法、应用解析系统、设备及存储介质 | |
CN114035805A (zh) | 用于预编译器的代码转换方法、装置、介质及设备 | |
CN110196720A (zh) | 一种Simulink生成动态链接库的优化方法 | |
CN112631649A (zh) | 智能合约管理方法、装置、终端设备及介质 | |
CN116302930A (zh) | 应用测试方法和装置 | |
CN111078573A (zh) | 一种测试报文的生成方法及装置 | |
CN117370398B (zh) | 一种变更数据的比对方法及装置 | |
CN110941655A (zh) | 一种数据格式转换方法及装置 | |
CN117370398A (zh) | 一种变更数据的比对方法及装置 | |
CN114924733A (zh) | 一种表单依赖关系管理和表单精准渲染方法和系统 | |
CN111580821A (zh) | 脚本绑定方法、装置、电子设备及计算机可读存储介质 | |
CN114611500A (zh) | 表达式处理方法、装置、电子设备及计算机可读存储介质 | |
CN112130860B (zh) | Json对象解析方法、装置、电子设备及存储介质 | |
CN114329090A (zh) | 路径寻参的方法、装置、电子设备及存储介质 | |
CN111309558B (zh) | 收集vue框架中事件数据的方法、装置、设备及存储介质 | |
CN111401020A (zh) | 一种界面加载方法、系统和计算设备 | |
CN112114870A (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 |