比较两个 JSONObject 结构(忽略它们的值)?

Chr*_*ian 6 java json unit-testing

我正在寻找一个 JSON 配对库,它支持比较两个 JSON 对象的结构、忽略值、子顺序,并且 - 如果可能的话 - 可选地忽略响应中的其他元素;专门用于针对预期结构从 Web 服务返回的 JSON 进行单元测试。(我想将示例响应传递到断言方法中,并将其结构与实际响应进行比较 - 而不是必须为每个节点编写断言。获取不同的值不是问题,只要结构良好.)

是否有任何主要的 JSON 库支持这一点?(这个问题与在 Java 中比较两个 JSON 对象基本相同,但我希望断言忽略我的 JSON 结构中的值,这可能看起来像在Wikipedia 上找到的示例......)

fge*_*fge 1

您可能想看看 Guava 及其Equivalence

例如,如果您使用 Jackson,您将编写一个Equivalence<JsonNode>,您可以根据需要对其进行自定义。

下面是此类 的一个示例Equivalence,如果所有数字在数学上递归地相等,则认为两个 JSON 值相等。

用法:yourEquivalence.equivalent(node1, node2)

另一个解决方案是编写一个 POJO,它序列化为您想要的 JSON,并尝试将您的 JSON 反序列化为所述 POJO。如果反序列化失败,你的结构就是错误的。