JSON Python Parson Eine einfache Anleitung
JSON (steht für “JavaScript-Objekt-Notation”) ist ein textbasiertes Format, das den Datenaustausch zwischen verschiedenen Anwendungen erleichtert. Eine in C ++ geschriebene Anwendung So beheben Sie Windows Visual C ++ - Laufzeitfehler So beheben Sie Windows Visual C ++ - Laufzeitfehler Visual C ++ - Fehler sind ein häufiges Problem für Windows-Benutzer. Aber weißt du, wie man sie repariert? Lesen Sie mehr unter Windows, um JSON-Daten mit einer in Python geschriebenen und unter Linux laufenden Anwendung problemlos auszutauschen. Seine Einfachheit und Flexibilität hat in den letzten Jahren zu einer weit verbreiteten Verwendung geführt, vor allem gegenüber früheren XML-basierten Formaten.
Es gibt Bibliotheken und Toolkits zum Analysieren und Generieren von JSON aus nahezu jeder Sprache und Umgebung. Dieser Artikel konzentriert sich auf Methoden und Probleme, die sich aus der Verarbeitung von JSON mit Python ergeben.
Einige JSON-Beispiele
Die häufigste JSON-Entität, der Sie begegnen werden, ist eine Objekt: Eine Gruppe von Schlüsselwertzuordnungen im unten gezeigten Format.
person.json:
"firstName": "Alice", "lastName": "Hall", "age": 35
So können Sie ein Array von Objekten darstellen. In dieser Darstellung ist jedes Element des Arrays ein Objekt. Das folgende ist eine Probe von Gehältern von Baseballspielern.
Gehälter.json:
["year": 1985, "teamId": "ATL", "leaId": "NL", "playerId": "barkele01", "gehalt": 870000, "year": 1985, "teamId": "ATL", "LeagueId": "NL", "PlayerId": "Bedrost01", "Gehalt": 550000]
Natürlich können Sie auch ein Array von Skalaren darstellen. Es sieht aus wie das:
["hallo", "welt", 35]
Parsen von JSON in Python
Python So erhalten Sie Python und JavaScript für die Kommunikation mit JSON So erhalten Sie Python und JavaScript für die Kommunikation mit JSON Heute werde ich Ihnen zeigen, wie Sie mit JSON Daten von JavaScript an Python senden. Ich werde darauf eingehen, wie Sie einen Webserver einrichten und den Code eingeben, den Sie benötigen. Lesen Sie mehr bietet die Json Dieses Modul kann sowohl zum Parsen von JSON als auch zum Generieren von JSON aus Python-Objekten und -Listen verwendet werden.
Der folgende Codeausschnitt zeigt, wie eine JSON-Datei geöffnet und die Daten in eine Variable geladen werden.
Importiere Json mit open ('sample.json', 'r') als fp: obj = json.load (fp)
Wenn Sie über eine Zeichenfolge verfügen, die die JSON-Daten enthält, können Sie sie mit folgendem Befehl in ein Python-Objekt (oder eine Liste) konvertieren:
obj = json.loads ("" "" firstName ":" Alice "," lastName ":" Hall "," age ": 35" "")
Um eine JSON-URL zu analysieren, können Sie ein URL-Objekt mit erstellen urllib2 und verwenden json.load () wie vorher.
import urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') obj = json.load (url)
Fehler behandeln
Wenn der JSON Fehler aufweist, erhalten Sie eine ValueError. Sie können damit umgehen und bei Bedarf Korrekturmaßnahmen ergreifen.
try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") mit Ausnahme von ValueError: print" Fehler beim Laden von JSON "
Analysieren von JSON über die Befehlszeile
In manchen Fällen ist es nützlich, JSON mithilfe der Python-Befehlszeile zu analysieren, möglicherweise auf Fehler zu prüfen oder eine gut eingerückte Ausgabe zu erhalten.
cat glossary.json # druckt "glossary": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Eine Meta-Markup-Sprache, die zum Erstellen von Markup-Sprachen wie DocBook verwendet wird.", "GlossSee": "Markup", "Akronym": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Abbrev": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "title": "S", "title": "Beispielglossar"
Um eine eingerückte Ausgabe aus der obigen JSON-Datei zu erhalten, haben Sie folgende Möglichkeiten:
python -mjson.tool glossary.json # druckt "glossary": "GlossDiv": "GlossList": "GlossEntry": "Abbrev": "ISO 8879: 1986", "Akronym": "SGML", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Eine Meta-Markup-Sprache, die zum Erstellen von Markup-Sprachen wie DocBook verwendet wird." , "GlossSee": "Markup", "GlossTerm": "Standard Generalized Markup Language", "ID": "SGML", "SortAs": "SGML", "title": "S", "title ":" Beispielglossar "
Und so können Sie das JSON-Objekt in Python laden und nur das extrahieren, was Sie benötigen.
python -c 'import json; fp = open ("glossary.json", "r"); obj = json.load (fp); fp.close (); print obj ["glossary"] ["title"] '# gibt ein Beispielglossar aus
Zugriff auf die Daten
Nachdem Sie die JSON-Daten in eine Python-Variable geladen haben, können Sie auf die Daten wie auf jedes Python-Diktat (oder eine Liste je nach Fall) zugreifen. Auf die obigen JSON-Daten kann beispielsweise wie folgt zugegriffen werden:
firstName = obj ["firstName"] lastName = obj ["Hall"] Alter = obj ["Alter"]
Datentypen
Datentypen werden automatisch aus den Daten ermittelt. Beachten Sie, dass Alter wird als ganze Zahl analysiert.
Drucktyp (obj ["firstName"]), Typ (obj ["lastName"]), Typ (obj ["age"]) # druckt
Die folgende Konvertierungstabelle wird zum Konvertieren von JSON in Python verwendet.
Analysieren von JSON mit einer benutzerdefinierten Klasse
Standardmäßig wird ein JSON-Objekt in einen Python analysiert Dikt. Manchmal besteht die Notwendigkeit, aus den JSON-Daten automatisch ein Objekt Ihrer eigenen Klasse zu erstellen. Sie können das tun, indem Sie ein angeben object_hook Funktion, die die Konvertierung übernimmt. Das folgende Beispiel zeigt wie.
Hier ist eine benutzerdefinierte Klasse, die a darstellt Person.
Klasse Person: def __init __ (selbst, Vorname, Nachname, Alter): selbst.erstName = Vorname self.astername = Nachname self.age = Alter def __str __ (selbst): Rückgabe '"firstName" = "0", "lastName" = "1", "age" = 2. format (self.firstName, self.lastName, self.age)
Eine Instanz dieser Klasse wird erstellt, indem die erforderlichen Argumente wie folgt übergeben werden:
Person = Person ("Kristall", "Newell", 27)
Um diese Klasse zum Erstellen von Instanzen beim Analysieren von JSON verwenden zu können, benötigen Sie eine object_hook Funktion wie folgt definiert: Die Funktion empfängt einen Python Dikt und gibt ein Objekt der richtigen Klasse zurück.
def obj_creator (d): Rückgabe Person (d ['firstName']), d ['lastName'], d ['age'])
Sie können dies jetzt verwenden object_hook Funktion beim Aufruf des JSON-Parsers.
mit open ('sample.json', 'r') als fp: obj = json.load (fp, object_hook = obj_creator) print obj # druckt "firstName" = "Alice", "lastName" = "Hall", " Alter "= 35
Beispiele für die Verwendung von JSON
JSON ist heutzutage sehr beliebt. Viele Websites und SaaS-Anwendungen (Software As A Service) bieten JSON-Ausgaben, die direkt von Anwendungen verwendet werden können. Einige der öffentlich verfügbaren sind:
- StackOverflow / StackExchange. Hier ist eine URL, die eine Liste mit Fragen im JSON-Format zurückgibt.
- GitHub bietet eine JSON-API unter https://developer.github.com/v3/ an..
- Und hier ist die Flickr-API: https://developer.yahoo.com/flickr/.
Verwenden Sie JSON zum Konsumieren oder Bereitstellen von Diensten? Und verwenden Sie Python in Ihrem Technologie-Stack? Erklären Sie es in den Kommentaren unten.
Erfahren Sie mehr über: Programmierung, Python.