Cloud-Lösungen der Zukunft - Testen!
Revolutionäre Cloud-Technologie, ganz ohne versteckte Kosten. Profitieren Sie von unserer Testphase und entdecken Sie umfassende Funktionen. Der Anmeldeprozess ist transparent und unkompliziert. Starten Sie jetzt Ihre Reise in die Cloud - Kostenfrei!
JSONPath in Python
JSONPath ist eine Ausdruckssprache zum Parsen von JSON-Daten. Sie ist sehr ähnlich zur XPath-Ausdruckssprache zum Parsen von XML-Daten. Die Idee ist, die JSON-Daten zu parsen und den gewünschten Wert zu erhalten. Dies ist speichereffizienter, da wir nicht die gesamten JSON-Daten lesen müssen.
Python JSONPath Bibliotheken
Es gibt viele JSONPath-Bibliotheken in Python.
- jsonpath: Ein Port der Perl- und JavaScript-Versionen von JSONPath.
- jsonpath-rw: Die komplette Python-Implementierung der JSONPath-Ausdrücke. Die JSONPath-Ausdrücke sind erstklassige Objekte, leicht zu analysieren, transformieren, parsen, drucken und erweitern. Das Modul jsonpath-rw-ext bietet einige zusätzliche Erweiterungen, um seine Funktionalitäten zu erweitern.
- jsonpath-ng: Die endgültige Implementierung von JSONPath, die standardkonform sein soll, einschließlich arithmetischer und binärer Vergleichsoperatoren. Diese Bibliothek vereint die Module jsonpath-rw und jsonpath-rw-ext und erweitert sie weiter.
Welche Python JSONPath-Bibliothek verwenden?
Das Modul jsonpath-ng ist das umfassendste und rein in Python geschrieben. Es unterstützt sowohl Python 2 als auch Python 3. Daher werden wir dieses Modul für Python JSONPath-Beispiele verwenden.
Installation des jsonpath-ng Moduls
Wir können das jsonpath-ng Modul mit PIP installieren.
$ pip3.7 install jsonpath-ng
Ein einfaches JSON-Datum mit JSONPath parsen
Lassen Sie uns ein einfaches Beispiel betrachten, um die JSON-Daten zu parsen und den erforderlichen Attributwert zu erhalten.
import json
from jsonpath_ng import jsonpath, parse
json_string = '{"id":1, "name":"Pankaj"}'
json_data = json.loads(json_string)
jsonpath_expression = parse('$.id')
match = jsonpath_expression.find(json_data)
print(match)
print("id value is", match[0].value)
Output:
[DatumInContext(value=1, path=Fields('id'), context=DatumInContext(value={'id': 1, 'name': 'Pankaj'}, path=Root(), context=None))]
id value is 1
Eine Liste mit JSONPath-Ausdruck parsen
Der JSON-Schlüssel kann eine Liste von Werten enthalten. Wir können den JSONPath-Ausdruck verwenden, um die Liste zu parsen und die Liste der Werte zu erhalten. Nehmen wir an, wir haben eine JSON-Datei „db.json“ mit folgendem Inhalt.
{"employees": [
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
}
Wir möchten diese JSON-Datei parsen und die Liste der Mitarbeiter-IDs erhalten. Wir können JSONPath-Ausdrücke verwenden, um diese Daten sehr einfach zu erhalten.
import json
from jsonpath_ng import jsonpath, parse
with open("db.json", 'r') as json_file:
json_data = json.load(json_file)
print(json_data)
jsonpath_expression = parse('employees[*].id')
for match in jsonpath_expression.find(json_data):
print(f'Employee id: {match.value}')
Output:
{'employees': [{'id': 1, 'name': 'Pankaj', 'salary': '10000'}, {'name': 'David', 'salary': '5000', 'id': 2}]}
Employee id: 1
Employee id: 2
Wenn Sie die Daten in eine Liste bekommen möchten, können Sie das Python List Comprehension verwenden.
emp_ids_list = [match.value for match in jsonpath_expression.find(json_data)]
print(emp_ids_list) # [1, 2]
Fazit
JSONPath bietet uns eine einfache Möglichkeit, die JSON-Daten zu parsen und spezifische Werte zu extrahieren. Es ist sehr nützlich, wenn die JSON-Daten groß sind und wir nur an einigen der Werte interessiert sind.
Kostenlosen Account erstellen
Registrieren Sie sich jetzt und erhalten Sie exklusiven Zugang zu weiterführenden Ressourcen, individuellem Support und einer Community von Experten.
Aktuelle Beiträge
Starten Sie Ihre Cloud-Reise mit unserer kostenlosen Trial-Version!
Entdecken Sie die grenzenlosen Möglichkeiten unserer Cloud-Dienste ganz unverbindlich. Melden Sie sich jetzt für unsere kostenlose Trial-Version an und erleben Sie, wie unsere innovativen Lösungen Ihr Business transformieren können.