我遇到了深入比较对象并突出显示网页差异的问题。它有4个域类,ServerTypes
,Server
,Components
& 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 类的所有对象进行了比较。
现在,遇到问题,我感觉很难在循环每个对象并进行更深入的比较,除此之外,我很难用这种方法显示网页的差异。
这里的人才是否有任何建议以合理和简单的方式进行,而不是循环每个对象并进行粗略的比较?
我试图以尽可能最好的方式呈现这一点。如果还不清楚,请告诉我,我很乐意为您编辑问题。
非常感谢提前。
答案 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)如何显示
至于如何显示它,我会看看其他人如何显示在线比较: