„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie vergleiche ich JSON-Objekte auf Gleichheit und ignoriere dabei die untergeordnete Reihenfolge in Java?

Wie vergleiche ich JSON-Objekte auf Gleichheit und ignoriere dabei die untergeordnete Reihenfolge in Java?

Veröffentlicht am 20.11.2024
Durchsuche:635

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

Testen von JSON-Objekten auf Gleichheit unter Ignorieren der untergeordneten Reihenfolge in Java

Bei Unit-Tests ist es üblich, von Webdiensten zurückgegebene JSON-Objekte zu vergleichen zu erwarteten Werten. Einige JSON-Bibliotheken führen jedoch möglicherweise strenge Referenzvergleiche durch, die brüchig sein und aufgrund von Unterschieden in der untergeordneten Reihenfolge fehlschlagen können.

Für diesen Zweck bietet die Skyscreamer JSONAssert-Bibliothek eine Lösung. Sein nicht-strikter Modus ermöglicht Flexibilität durch:

  • Ermöglicht die Erweiterbarkeit von Objekten: Erwartete Objekte können zusätzliche Felder enthalten, ohne dass der Vergleich fehlschlägt.
  • Ermöglicht lose Array-Reihenfolge: Arrays können sein außer Betrieb und bestehen den Vergleich trotzdem.

Im Gegensatz dazu verhält sich der strikte Modus konservativer, ähnlich der Testklasse von json-lib.

Um JSONAssert zu verwenden, können Tests wie folgt erstellt werden folgt:

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

Die Parameter in JSONAssert.assertEquals() umfassen die erwartete JSON-Zeichenfolge, die tatsächliche Datenzeichenfolge und ein Flag, das den strikten Modus angibt oder nicht.

JSONAssert liefert klare Fehlermeldungen, was entscheidend ist, wenn Vergleich großer JSON-Objekte, Gewährleistung der Robustheit bei Unit-Tests.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3