【问题标题】:How to compare / diff two objects in java如何在java中比较/区分两个对象
【发布时间】:2015-02-03 19:49:45
【问题描述】:

我有两个对象,一个对象 A 来自现有生产,另一个对象 B 来自我们的新管道。最终它们都将被序列化为 JOSN。现在,我想比较这两个管道是否生成相同的结果,这意味着这两个对象/JSON 是否携带相同的数据集。

注意,相同的意思是,它们具有相同的架构,并携带相同的数据集。例如,

对象A有

{"person" : [{"name": "alice"}, {"name": "bob"}, {"name" : "mike"}]}, 

对象 B 有

{"person" : [{"name": "bob"}, {"name": "alice"}, {"name" : "mike"}]}. 

如果您运行 JSONDiss 某些东西,这将导致差异,但在我的情况下,即使键/值对的顺序不同,它们也应该被视为相同。 Object/JSON 的结构可能更复杂,但想法是,在每个包/子包中,它们应该包含相同的数据集。

就我而言,目标不仅仅是找出它们是否“相同”,而是找出有什么区别?例如,对象 3 有一个名为 "name" : "Tom" 的键/值对,而对象 1 没有。我总是而且只需要比较两个对象。

我想知道是否有任何现有的图书馆可以做到这一点?或者有什么建议吗?

【问题讨论】:

  • 为什么它们被认为是相同的?
  • @MattBall 因为对象内的集合被视为集合,如问题所述。
  • 您是否尝试过订购两个数组然后比较两者?
  • 那么你必须使用外部比较器。 docs.oracle.com/javase/8/docs/api/java/util/Comparator.html
  • 将 JSON 解析为某种 POJO,使用您想要的语义。

标签: java json compare equals


【解决方案1】:

我知道这有点老了……(后来看到了)

这是一个应该有效的答案:Compare JSON with nested arrays and jsons (Array order does not matter)

【讨论】:

    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 2012-12-12
    • 2012-04-20
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多