"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 하위 순서를 무시하면서 JSON 객체의 동등성을 비교하는 방법은 무엇입니까?

Java에서 하위 순서를 무시하면서 JSON 객체의 동등성을 비교하는 방법은 무엇입니까?

2024년 11월 20일에 게시됨
검색:823

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

Java에서 하위 순서를 무시하면서 JSON 개체의 동등성 테스트

단위 테스트에서는 웹 서비스에서 반환된 JSON 개체를 비교하는 것이 일반적입니다. 기대값에. 그러나 일부 JSON 라이브러리는 엄격한 참조 비교를 수행할 수 있으며, 이는 하위 순서의 차이로 인해 불안정하고 실패할 수 있습니다.

이를 위해 Skyscreamer JSONAssert 라이브러리가 솔루션을 제공합니다. 비엄격 모드는 다음을 통해 유연성을 허용합니다:

  • 객체 확장성 허용: 예상 객체는 비교 실패 없이 추가 필드를 포함할 수 있습니다.
  • 느슨한 배열 순서 허용: 배열은 순서가 어긋나도 여전히 비교를 통과합니다.

반대로 엄격 모드는 json-lib의 테스트와 유사하게 더 보수적으로 동작합니다. class.

JSONAssert를 활용하기 위해 다음과 같이 테스트를 구성할 수 있습니다.

@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
}

JSONAssert.assertEquals()의 매개변수에는 예상되는 JSON 문자열, 실제 데이터 문자열, 엄격 모드 여부를 나타내는 플래그가 포함됩니다.

JSONAssert는 명확한 오류 메시지를 제공합니다. 대규모 JSON 개체를 비교하여 단위 테스트의 견고성을 보장합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3