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.

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.

Try for free!