Python Vergleichen Sie mehrstufige JSON-Objekte mit JSON Diff

Salman Mehmood 10 Oktober 2023
  1. Vergleichen Sie mehrstufige JSON-Objekte in Python
  2. Verwenden Sie den Gleichheitsoperator, um mehrstufige JSON-Objekte in Python zu vergleichen
  3. Verwenden Sie jsondiff, um mehrstufige JSON-Objekte in Python zu vergleichen
Python Vergleichen Sie mehrstufige JSON-Objekte mit JSON Diff

Dieser Artikel soll zeigen, wie wir zwei JSON-Objekte mit mehreren Ebenen vergleichen und feststellen können, ob sie identisch sind.

Vergleichen Sie mehrstufige JSON-Objekte in Python

JSON-Objekte, kurz für JavaScript Object Notation, werden hauptsächlich zum Austausch von Daten verwendet und gelten allgemein als sehr leichtgewichtig. Einer der Hauptvorteile besteht darin, dass es von Menschen und Maschinen leicht verstanden werden kann – wie in einer einfachen Analyse, wodurch das Gerät wertvolle Informationen extrahieren kann.

Aufgrund seiner häufigen Verwendung müssen wir möglicherweise zwei Objekte aus irgendeinem Grund vergleichen. Dies kann der Überprüfung dienen, ob deren Inhalt identisch ist, oder zu einem anderen Zweck.

Betrachten Sie den folgenden Code:

obj1 = {
    "countries": [
        {
            "name": "Great Britian",
            "cities": [{"name": "Manchester"}, {"name": "London"}],
        }
    ]
}

obj2 = {"countries": [{"name": "Great Britian", "cities": [{"name": "London"}]}]}

Das Code-Snippet zeigt, dass wir zwei JSON-Objekte haben, die Informationen über Länder und ihre Städte speichern. Eine interessante Sache, die hier zu beachten ist, ist, dass sie mehrstufig sind, was bedeutet, dass die Objekte mehr JSON-Objekte enthalten, die darin verschachtelt sind.

Verwenden Sie den Gleichheitsoperator, um mehrstufige JSON-Objekte in Python zu vergleichen

Bevor Sie sich mit Bibliotheken von Drittanbietern befassen, prüfen Sie am besten, ob unsere Aufgabe über die Standard-Python-Funktionen machbar ist. Glücklicherweise funktioniert die Gleichheit für unseren Anwendungsfall genauso gut.

Wenn Sie jedoch mehr Kontrolle über Variablen benötigen, z. B. zum Filtern von Daten oder zum Suchen nach bestimmten Änderungen, müssen Sie möglicherweise eine Bibliothek eines Drittanbieters verwenden, da der Gleichheitsoperator nicht so viel Flexibilität bietet, wie Sie möglicherweise benötigen. Für einfachere Fälle ist die Verwendung des Gleichheitsoperators mehr als ausreichend.

Betrachten Sie den folgenden Code:

obj1 = {
    "errors": [{"error": "err1", "fld": "mail"}, {"error": "err2", "fld": "name"}],
    "success": "false",
}

obj2 = {
    "errors": [{"error": "err1", "fld": "mail"}, {"error": "err2", "fld": "name"}],
    "success": "false",
}

obj3 = {
    "errors": [
        {"error": "err1", "fld": "mail"},
        {"error": "err2", "fld": "name"},
        {"error": "err3", "fld": "time"},
    ],
    "success": "false",
}

print(obj1 == obj2)
print(obj2 == obj3)

Ausgang:

True
False

Im Folgenden ist zu sehen, dass drei JSON-Objekte deklariert sind, von denen zwei gleich sind, während eines unterschiedlich ist. Mit dem Gleichheitsoperator können wir feststellen, ob sie gleich sind.

Dieser Ansatz ist leichter zu implementieren als jede Bibliothek von Drittanbietern und erspart die Mühe, die Dokumentation der Bibliotheken zu überprüfen. Andererseits bietet es nicht viel Funktionalität, die bei Bedarf mit einem Modul/einer Bibliothek eines Drittanbieters erreicht werden kann.

Verwenden Sie jsondiff, um mehrstufige JSON-Objekte in Python zu vergleichen

jsondiff ist ein Open-Source-Modul eines Drittanbieters, das verwendet werden kann, um zwischen JSON und JSON-ähnlichen Strukturen zu unterscheiden. Mit dieser Bibliothek kann es ziemlich einfach werden, Unterschiede zwischen JSON-Objekten zu finden, seien sie mehrstufig oder ungeordnet.

Bevor wir sehen, wie wir das machen können, installieren wir zuerst jsondiff, da es ein Modul eines Drittanbieters ist und nicht in eine Standard-Python-Installation integriert ist.

Anleitung zur Installation von jsondiff

Öffnen Sie die Eingabeaufforderung und führen Sie den folgenden Befehl aus, um mit der Installation von jsondiff zu beginnen:

pip install jsondiff

Ausgang:

Collecting jsondiff
Downloading jsondiff-2.0.0-py3-none-any.whl (6.6 kB)
Installing collected packages: jsondiff
Successfully installed jsondiff-2.0.0

Nachdem jsondiff installiert wurde, können wir damit beginnen, unsere Aufgabe zu erfüllen.

Betrachten Sie den folgenden Code:

import jsondiff

obj1 = {
    "countries": [
        {
            "name": "Great Britian",
            "cities": [{"name": "Manchester"}, {"name": "London"}],
        }
    ]
}

obj2 = {
    "countries": [
        {
            "name": "Great Britian",
            "cities": [{"name": "Manchester"}, {"name": "London"}],
        }
    ]
}

res = jsondiff.diff(obj1, obj2)

if res:
    print("Diff found")
else:
    print("Same")

Ausgang:

Same

Im folgenden Code haben wir die Drittanbieter-Bibliothek jsondiff verwendet, um herauszufinden, ob die beiden Objekte gleich sind oder nicht. Genauer gesagt haben wir die Funktion jsondiff.diff() verwendet und unsere JSON-Objekte mit den Namen obj1 und obj2 übergeben.

Die Funktionsweise von jsondiff.diff besteht darin, dass sie, wenn sie Änderungen findet, diese zurückgibt, die wir in einer Variablen namens res speichern. Ob es Unterschiede gibt, wir können schnell feststellen, ob die verglichenen Objekte identisch oder unterschiedlich sind.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Python JSON