当前位置: 首页 > 知识库问答 >
问题:

比较两个json字符串,并使用Java打印它们之间的差异

端木桐
2023-03-14

我有两个json字符串,我想比较string2和string1,并打印它们的不同之处。

例如:

expectedJson:{Products:{Product:[{Product_name:“string”“unit_cost:“string”}],“Region:[“string”]}

inputJson:{Products:{Product:[{Product_name:“string”“unit_cost:“number”}],“Region:[“string”]}

比较结果应该是:差异:“单位成本”:“数量”

我正在使用JSONP(javax)库来读取和解析输入JSON负载,并构建上面的(inputJosn)字符串,现在想将其与实际预期的JSON模式(actualJson)字符串进行比较。

你对此有什么想法或意见吗?

共有1个答案

欧阳博文
2023-03-14

您可以将这些json对象实例化为java POJO,并在类中有一个方法或静态方法来比较并提供所需的结果。

1-编写一个类,复制你正在接收的json的结构。由于你有一个列表,你可能需要编写多个类,这样你就可以拥有复制数组的属性,例如:

public ClassA{
    ArrayList<ClassB> bClassObjectList;
    ...
    <getters and setters>
}

public ClassB{
 ...      
}

2-为类的所有属性添加公共getters和setters

3-使用Gson库将json字符串(预期的和接收的)解序列化为对象或您编写的顶级类。

4-在顶部类中编写一个静态方法来比较对象并返回您需要的结果。

这可能是实现静态方法进行比较的一种方法,您可以根据需要完全不同地进行比较。

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;
}
 类似资料:
  • 我在学校开始Java,我被要求做这个练习,但我卡住了。我有两个数字,我必须找到这两个数字之间的字符差异,为了使它在字符数量上相等,我必须添加许多零作为缺失的字符。所以例如,如果我有10和100,输出将是010和100。我想得到支持,了解如何在这两个数字的string.length,我可以检测到缺少的字符并添加0。

  • 问题内容: 我试图突出显示两个数据框之间到底发生了什么变化。 假设我有两个Python Pandas数据框: 我的目标是输出一个HTML表: 标识已更改的行(可以是int,float,boolean,string) 输出具有相同,OLD和NEW值的行(理想情况下,将其输出到HTML表中),以便使用者可以清楚地看到两个数据框之间的变化: id Name score isEnrolled Commen

  • 我错过了什么?

  • 问题内容: 我需要比较两个CSV文件并在第三个CSV文件中打印出差异。在我的情况下,第一个CSV是一个名为old.csv的哈希表的旧列表,第二个CSV是包含新旧哈希表的新哈希表。 这是我的代码: 第三个文件是旧文件的副本,而不是更新文件。怎么了 ?我希望你能帮助我,非常感谢! PS:我不想使用diff 问题答案: 问题在于您正在将中的每一行与中的同一行进行比较。只要一个文件中有多余的一行,您就会发

  • 我想我可以做一个逐行和逐列的比较,但有没有更简单的方法?

  • 我想排序2列表并比较它们,但排序方法不起作用。我有2个字符串列表,其中包括整数。 这些是我的名单 我的getwords方法返回: