【发布时间】: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 因为对象内的集合被视为集合,如问题所述。
-
您是否尝试过订购两个数组然后比较两者?
-
将 JSON 解析为某种 POJO,使用您想要的语义。