"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-20
Parcourir:388

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

Test d'é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 :

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

Les paramètres de 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 lorsque comparer de gros objets JSON, garantissant la robustesse des tests unitaires.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3