在 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中文网其他相关文章!