Haben Sie sich jemals dabei ertappt, wie Sie sich durch eine riesige JSON-Antwort graben, um genau das eine benötigte Datenelement zu finden? Wenn ja, dann wissen Sie, dass es ein bisschen so sein kann, als würde man die Nadel im Heuhaufen suchen. Hier kommt JSONPath ins Spiel – ein praktisches kleines Tool, das Ihr Leben so viel einfacher machen kann, wenn Sie mit JSON-Daten in APIs arbeiten.
Was ist JSONPath?
JSONPath ist eine Abfragesprache für JSON, ähnlich wie XPath für XML. Es ermöglicht Ihnen, durch Ihre JSON-Daten zu navigieren und bestimmte Teile davon zu extrahieren, indem Sie eine einfache, intuitive Syntax verwenden. Stellen Sie es sich als eine Möglichkeit vor, Abfragen für Ihre JSON-Daten auszuführen und genau das zu erhalten, was Sie benötigen, ohne die gesamte Antwort durchforsten zu müssen.
Warum JSONPath verwenden?
Stellen Sie sich vor, Sie haben eine riesige JSON-Antwort von einer API; alles, was Sie brauchen, ist der Wert eines bestimmten Felds, das tief im Inneren verschachtelt ist. Ohne JSONPath müssten Sie typischerweise eine Menge Code schreiben, um das JSON zu parsen, was mühsam und fehleranfällig sein kann. JSONPath vereinfacht dies, indem Sie genau angeben können, was Sie extrahieren möchten, wodurch Ihr Code sauberer und leichter zu warten ist.
Wie funktioniert JSONPath?
JSONPath verwendet eine Syntax, die der JavaScript-Objektnotation ähnelt, mit einigen zusätzlichen Funktionen für komplexere Abfragen. Hier ist eine kurze Übersicht über die grundlegende Syntax:
$
: Repräsentiert das Stammobjekt oder -array..
oder[]
: Child-Operator; wird verwendet, um auf eine Eigenschaft des Objekts oder ein Element des Arrays zuzugreifen.*
: Wildcard; gleicht alle Elemente oder Felder ab...
: Rekursiver Abstieg; sucht nach übereinstimmenden Knoten auf jeder Ebene.?()
: Wendet einen Filter an (Ausdruck muss zu true ausgewertet werden).()
: Skriptausdruck unter Verwendung der zugrunde liegenden Skript-Engine.
Lassen Sie uns in einige Beispiele eintauchen, um JSONPath in Aktion zu sehen.
Grundlegende JSONPath-Beispiele
Betrachten Sie die folgenden JSON-Daten von einer Filmdatenbank-API:
{
"movies": {
"action": [
{ "title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1 },
{ "title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4 }
],
"drama": [
{ "title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3 },
{ "title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8 }
],
"comedy": [
{ "title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1 }
]
}
}
Extrahieren aller Actionfilme:
$.movies.action[*]
Dies gibt Ihnen ein Array aller Actionfilmobjekte.
Extrahieren der Titel aller Dramafilme:
$.movies.drama[*].title
Dies gibt ein Array der Titel aller Dramafilme zurück: ["The Shawshank Redemption", "Forrest Gump"]
.
Extrahieren der Bewertung von "Mad Max: Fury Road":
$.movies.action[?(@.title == "Mad Max: Fury Road")].rating
Dies gibt die Bewertung von "Mad Max: Fury Road" zurück: 8.1
.
Finden aller Filme, die 2014 veröffentlicht wurden:
$.movies..[?(@.year == 2014)]
Dies gibt alle Filme zurück, die 2014 veröffentlicht wurden, was in diesem Fall Folgendes ist: ["John Wick", "The Grand Budapest Hotel"]
.
JSONPath in APIs
Die Verwendung von JSONPath in APIs ist unglaublich nützlich, wenn Sie bestimmte Informationen aus einer JSON-Antwort extrahieren möchten. Viele Programmiersprachen und -tools verfügen über Bibliotheken, die JSONPath unterstützen, wodurch es einfach ist, es in Ihre Projekte zu integrieren.
In Javascript können Sie beispielsweise die jsonpath
-Bibliothek verwenden:
const jsonpath = require('jsonpath');
// Sample JSON data
const data = {
movies: {
action: [
{ title: "Mad Max: Fury Road", director: "George Miller", year: 2015, rating: 8.1 },
{ title: "John Wick", director: "Chad Stahelski", year: 2014, rating: 7.4 }
],
drama: [
{ title: "The Shawshank Redemption", director: "Frank Darabont", year: 1994, rating: 9.3 },
{ title: "Forrest Gump", director: "Robert Zemeckis", year: 1994, rating: 8.8 }
],
comedy: [
{ title: "The Grand Budapest Hotel", director: "Wes Anderson", year: 2014, rating: 8.1 }
]
}
};
// Extracting titles of all drama movies
const titles = jsonpath.query(data, '$.movies.drama[*].title');
console.log(titles); // Output: ["The Shawshank Redemption", "Forrest Gump"]
In Python können Sie die jsonpath-ng
-Bibliothek verwenden:
from jsonpath_ng import jsonpath, parse
# Sample JSON data
data = {
"movies": {
"action": [
{"title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1},
{"title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4}
],
"drama": [
{"title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3},
{"title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8}
],
"comedy": [
{"title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1}
]
}
}
# Extracting titles of all drama movies
jsonpath_expr = parse('$.movies.drama[*].title')
titles = [match.value for match in jsonpath_expr.find(data)]
print(titles) # Output: ["The Shawshank Redemption", "Forrest Gump"]
Verwendung von JSONPath in Apidog

Apidog ist ein vielseitiges Tool, das den Prozess der Arbeit mit APIs vereinfachen soll, und es unterstützt JSONPath out of the box.

So kann Apidog Ihnen helfen, die Leistungsfähigkeit von JSONPath effektiv zu nutzen:
Zuerst müssen Sie Anfragen an Ihre APIs senden und die Antworten direkt mit Apidog anzeigen. Dann können Sie die bereitgestellte Oberfläche verwenden, um eine JSONPath-Abfrage anzuwenden, um die Titel aller Actionfilme aus der Antwort zu extrahieren.

Auf dem obigen Screenshot sehen Sie, dass (1) wir eine GET
-Anfrage an unseren Server senden – ich habe einen einfachen Express-Server erstellt, der die JSON-Daten, die wir oben erhalten haben, als Antwort verwendet. Dann wechselte ich zur Registerkarte Post Processors (2) und fügte einen neuen Prozess hinzu – Extract Variable
(3).
Wenn Sie auf Extract Variable
klicken, wird Ihnen die folgende Seite angezeigt;

Sie können einen Variablennamen (1) festlegen, wenn Sie möchten. Variablen sind nützlich, wenn Sie verschiedene APIs überwachen oder erstellen möchten und einen einzigen Ort zur Verwaltung der allgemeinen Konfiguration benötigen. Die Variablen hier sind wie .env
-Dateien.
Der andere Schritt besteht darin, den JSONPath einzugeben, den Sie herausfiltern möchten (2). In unserem Fall möchten wir hier die Titel der Filme im Action-Array unseres JSON abrufen. Sobald Sie den Pfad eingegeben haben, klicken Sie auf die Pfeilschaltfläche (3), um die Antwortseite der Abfrage zu öffnen, wie unten gezeigt.

Wie Sie aus der obigen Antwort sehen können, filterte Apidog die Titel der Filme im Action-Array heraus und zeigte sie uns an.
Wenn Sie dies ausprobieren möchten, laden Sie Apidog herunter und installieren Sie es und senden Sie Ihre erste Anfrage damit.
Fazit
JSONPath ist ein unschätzbares Werkzeug zum Navigieren und Extrahieren von Daten aus JSON-Antworten in APIs. Es vereinfacht den Prozess der Arbeit mit komplexen JSON-Strukturen und macht Ihren Entwicklungsworkflow effizienter. Durch die Integration von JSONPath mit Tools wie Apidog können Sie ganz einfach genau die Daten filtern und abrufen, die Sie benötigen, wodurch Ihre API-Test- und Debugging-Prozesse verbessert werden. Egal, ob Sie Filmtitel extrahieren, bestimmte Datensätze filtern oder Antworten validieren, JSONPath bietet eine klare, präzise Möglichkeit, mit JSON-Daten umzugehen. Probieren Sie es in Ihrem nächsten Projekt aus und erleben Sie die schlanke Einfachheit, die es mit sich bringt.