Maison >Java >javaDidacticiel >Comment comparer les objets JSON pour l'égalité tout en ignorant l'ordre des enfants en Java ?

Comment comparer les objets JSON pour l'égalité tout en ignorant l'ordre des enfants en Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 00:44:02662parcourir

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

Test de l'égalité des objets JSON tout en ignorant l'ordre des enfants en Java

Dans les tests unitaires, il est courant de comparer les objets JSON renvoyés par les services Web aux valeurs attendues. Cependant, certaines bibliothèques JSON peuvent effectuer des comparaisons de références strictes, qui peuvent être fragiles et échouer en raison de différences dans l'ordre des enfants.

À cette fin, la bibliothèque Skyscreamer JSONAssert fournit une solution. Son mode non strict permet une certaine flexibilité en :

  • Autoriser l'extensibilité des objets : les objets attendus peuvent inclure des champs supplémentaires sans provoquer l'échec de la comparaison.
  • Autoriser l'ordre lâche des tableaux : les tableaux peuvent être dans le désordre et réussit toujours la comparaison.

En revanche, le mode strict se comporte de manière plus conservatrice, similaire à la classe de test de json-lib.

Pour utiliser JSONAssert, les tests peuvent être construits comme suit :

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

Les paramètres dans JSONAssert.assertEquals() incluent la chaîne JSON attendue, la chaîne de données réelle et un indicateur indiquant le mode strict ou non.

JSONAssert fournit des messages d'erreur clairs, ce qui est crucial lors de la comparaison de gros objets JSON, garantissant la robustesse des tests unitaires.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn