首页  >  文章  >  Java  >  如何在 Java 中忽略子顺序的同时比较 JSON 对象是否相等?

如何在 Java 中忽略子顺序的同时比较 JSON 对象是否相等?

Barbara Streisand
Barbara Streisand原创
2024-11-05 00:44:02599浏览

How to Compare JSON Objects for Equality While Ignoring Child Order in Java?

在 Java 中测试 JSON 对象是否相等,同时忽略子顺序

在单元测试中,通常会比较从 Web 服务返回的 JSON 对象至预期值。但是,某些 JSON 库可能会执行严格的引用比较,这可能会很脆弱,并且由于子顺序的差异而失败。

为此,Skyscreamer JSONAssert 库提供了一个解决方案。其非严格模式通过以下方式实现灵活性:

  • 允许对象可扩展性:预期对象可以包含其他字段,而不会导致比较失败。
  • 允许松散数组排序:数组可以是乱序,但仍然通过比较。

相反,严格模式的行为更加保守,类似于 json-lib 的测试类。

要利用 JSONAssert,可以将测试构造为如下:

<code class="java">@Test
public void testGetFriends() {
    JSONObject data = getRESTData("/friends/367.json");
    String expected = "{friends:[{id:123,name:\"Corby Page\"}"
        + ",{id:456,name:\"Solomon Duskis\"}]}";
    JSONAssert.assertEquals(expected, data, false); // Non-strict mode
}</code>

JSONAssert.assertEquals() 中的参数包括预期的 JSON 字符串、实际数据字符串以及指示是否严格模式的标志。

JSONAssert 提供明确的错误消息,这在比较大型 JSON 对象时至关重要,可确保单元测试的稳健性。

以上是如何在 Java 中忽略子顺序的同时比较 JSON 对象是否相等?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn