我有两个json字符串,我想将string2与string1进行比较并打印它们不同的地方。
例如:
expectedJson: { “产品”:{ “产品”:[{PRODUCT_NAME “:” 字符串 “” UNIT_COST “:” 串 “}],” 地区 “:[” 字符串“]}}
inputJson: { “产品”:{ “产品”:[{PRODUCT_NAME “:” 字符串 “” UNIT_COST “:” 号码 “}],” 地区 “:[” 字符串“]}}
比较结果应该是这样的:差异: “UNIT_COST”: “数字”
我正在使用JSONP(javax)库来读取和解析输入JSON有效负载并构建上面的(inputJosn)字符串,现在想将它与实际预期的json架构(actualJson)字符串进行比较。
对此有何想法或意见?
答案 0 :(得分:0)
您可以将这些json对象实例化为java POJO,并在类中使用方法或静态方法来比较并提供所需的结果。
1-编写一个复制您正在接收的json结构的类。由于您有一个列表,您可能需要编写多个类,因此您可以拥有复制数组的属性,例如:
public static final ArrayList<String> tellMeTheDifferenceBetween(ClassA obj1, ClassA obj2){
ArrayList<String> rtn = new ArrayList<>();
if(!ojb1.getProp1().equals(obj2.getProp2)){
rtn.add("Prop1_is_different");
}
if(ojb1.getProp2() != obj2.getProp2){
rtn.add("Prop2_is_different");
}
...
return rtn;
}
2-为类的所有属性添加公共getter和setter
3-使用Gson库将json字符串(预期和接收)反序列化为对象或您编写的顶级类。
4-在顶级类中编写一个静态方法来比较对象并返回所需的结果。
这可能是实现静态方法进行比较的一种方法,根据您的需要,您可以完全不同。
from sys import path
path.append('/PythonLibrary/PostgreSQL')
from Module import funcA, funcB, etc