深入比较对象并在网页中显示差异

时间:2016-09-10 11:12:52

标签: java object comparison

我遇到了深入比较对象并突出显示网页差异的问题。它有4个域类,ServerTypesServerComponents& Properties。所有这些都是通过bean连接的。

以下是上述域类的代码段。

  class ServerTypes {

    private List<Server> server;

    //getters&setters
}

    class Server {

    private List<Components> components; 
    //getters & setters
   } 

    class Components {

    private List<Properties> properties;
    //getters & setters

    }

    class Properties {
    private List<String> prop;
    //getters & setters

}

ServerTypes-&gt;服务器 - &gt;组件 - &gt;特性

Beans依赖于上述层次结构。我将循环遍历服务类的每个属性,提取数据,然后与配置文件中的数据进行比较。

ServerTypes,Server,Components和Properties 类的所有对象进行了比较。

现在,遇到问题,我感觉很难在循环每个对象并进行更深入的比较,除此之外,我很难用这种方法显示网页的差异。

这里的人才是否有任何建议以合理和简单的方式进行,而不是循环每个对象并进行粗略的比较?

我试图以尽可能最好的方式呈现这一点。如果还不清楚,请告诉我,我很乐意为您编辑问题。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

(1)对象比较

您可以尝试javers

我从未使用它,但我看到的看起来很棒。我从他们的网站(这里)举了一个例子

Diff diff = javers.compare(person1, person2);

List<ValueChange> changesByType = diff.getChangesByType(ValueChange.class);
for (ValueChange valueChange : changesByType) {
    System.out.println(valueChange);
}

输出:

  

ValueChange {globalId:'Person /#pets / 0',property:'name',oldVal:'cat',   newVal:'dog'} ValueChange {globalId:'Person /#pets / 0',property:'age',   oldVal:'1',newVal:'2'}

另外一个答案:Is there a Java library that can "diff" two Objects?

(2)Json比较

您还可以将对象转换为json以执行比较。然后,差异成为简单的文本比较。

(3)如何显示

至于如何显示它,我会看看其他人如何显示在线比较: