"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como comparar objetos JSON quanto à igualdade enquanto ignora a ordem infantil em Java?

Como comparar objetos JSON quanto à igualdade enquanto ignora a ordem infantil em Java?

Publicado em 2024-11-20
Navegar:930

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

Testando objetos JSON para igualdade enquanto ignora a ordem filho em Java

Em testes de unidade, é comum comparar objetos JSON retornados de serviços da web aos valores esperados. No entanto, algumas bibliotecas JSON podem realizar comparações de referência estritas, o que pode ser frágil e falhar devido a diferenças na ordem dos filhos.

Para esse propósito, a biblioteca Skyscreamer JSONAssert fornece uma solução. Seu modo não estrito permite flexibilidade ao:

  • Permitir a extensibilidade do objeto: os objetos esperados podem incluir campos adicionais sem causar falha na comparação. fora de ordem e ainda assim passar na comparação.
  • Em contraste, o modo estrito se comporta de forma mais conservadora, semelhante à classe de teste do json-lib.

Para utilizar JSONAssert, os testes podem ser construídos como segue:

@Teste public void testGetFriends() { Dados JSONObject = getRESTData("/friends/367.json"); String esperada = "{amigos:[{id:123,nome:\"Corby Page\"}" ",{id:456,nome:\"Solomon Duskis\"}]}"; JSONAssert.assertEquals(esperado, dados, falso); // Modo não estrito }
@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 fornece mensagens de erro claras, o que é crucial quando comparando grandes objetos JSON, garantindo robustez em testes unitários.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3