JSON Python-Parsing: Eine einfache Anleitung

JSON Python-Parsing: Eine einfache Anleitung

JSON (steht für 'JavaScript Object Notation') ist ein textbasiertes Format, das den Datenaustausch zwischen diversen Anwendungen erleichtert. Zum Beispiel eine Bewerbung geschrieben in C++ die unter Windows ausgeführt wird, kann problemlos JSON-Daten mit einer in Python geschriebenen und unter Linux laufenden Anwendung austauschen. Seine Einfachheit und Flexibilität hat in den letzten Jahren zu einer weit verbreiteten Verwendung geführt, insbesondere gegenüber früheren XML-basierten Formaten.





Es stehen Bibliotheken und Toolkits zum Parsen und Generieren von JSON aus fast jeder Sprache und Umgebung zur Verfügung. 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, auf die Sie stoßen werden, ist ein Objekt : eine Reihe von Schlüssel-Wert-Zuordnungen im unten gezeigten Format.





wie bootet man von iso auf usb

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 ein Beispiel für die Gehälter von Baseballspielern.



Gehälter.json:

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

Natürlich können Sie auch ein Array von Skalaren darstellen. Es sieht aus wie das:





[
'hello',
'world',
35
]

Parsen von JSON in Python

Python bietet die json -Modul, das sowohl zum Parsen von JSON als auch zum Generieren von JSON aus Python-Objekten und -Listen verwendet werden kann.

Der folgende Codeausschnitt zeigt, wie Sie eine JSON-Datei öffnen und die Daten in eine Variable laden.





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

Wenn Sie über eine Zeichenfolge mit den JSON-Daten verfügen, können Sie sie wie folgt in ein Python-Objekt (oder eine Liste) konvertieren:

mein computer macht komische geräusche
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Um eine JSON-URL zu parsen, können Sie mit . ein URL-Objekt erstellen urllib2 und verwenden json.load() wie vorher.

import urllib2, json
url = urllib2.urlopen('http://site.com/sample.json')
obj = json.load(url)

Umgang mit Fehlern

Wenn der JSON Fehler enthält, erhalten Sie a ValueError . Sie können damit umgehen und bei Bedarf Korrekturmaßnahmen ergreifen.

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

Parsen von JSON über die Befehlszeile

Manchmal ist es nützlich, JSON über die Python-Befehlszeile zu parsen, vielleicht um nach Fehlern zu suchen oder um eine gut eingerückte Ausgabe zu erhalten.

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

Um eine eingerückte Ausgabe aus der obigen JSON-Datei zu erhalten, können Sie Folgendes tun:

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

Und so können Sie das JSON-Objekt in Python laden und nur das extrahieren, was Sie brauchen.

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

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-Dikt (oder ggf. eine Liste) zugreifen. Auf die obigen JSON-Daten kann beispielsweise wie folgt zugegriffen werden:

firstName = obj['firstName']
lastName = obj['Hall']
age = obj['age']

Datentypen

Datentypen werden automatisch aus den Daten ermittelt. Beachten Sie, dass Alter wird als Ganzzahl geparst.

print(type(obj['firstName']), type(obj['lastName']), type(obj['age']))
# prints

Die folgende Konvertierungstabelle wird verwendet, um von JSON in Python zu konvertieren.

Analysieren von JSON mit einer benutzerdefinierten Klasse

Standardmäßig ist ein JSON-Objekt in eine Python geparst diktieren . Manchmal müssen Sie möglicherweise automatisch ein Objekt Ihrer eigenen Klasse aus den JSON-Daten erstellen. Sie können dies tun, indem Sie an . angeben Objekthaken Funktion, die die Konvertierung durchführt. Das folgende Beispiel zeigt, wie.

Hier ist eine benutzerdefinierte Klasse, die a . darstellt Person .

class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
def __str__(self):
return '{{'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('Crystal', 'Newell', 27)

Um diese Klasse zum Erstellen von Instanzen beim Parsen von JSON zu verwenden, benötigen Sie einen Objekthaken Funktion wie folgt definiert: Die Funktion erhält ein Python diktieren und gibt ein Objekt der richtigen Klasse zurück.

def obj_creator(d):
return Person(d['firstName'], d['lastName'], d['age'])

Das kannst du jetzt verwenden Objekthaken Funktion beim Aufrufen des JSON-Parsers.

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 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 zugänglichen sind:

  • StackOverflow/StackExchange. Hier ist eine URL die eine Liste von Fragen im JSON-Format zurückgibt.
  • GitHub bietet unter https://developer.github.com/v3/ eine JSON-API an.
  • Und hier ist die Flickr-API: https://developer.yahoo.com/flickr/.

Wenn Sie nach weiteren Beispielen suchen, wie Sie es sinnvoll einsetzen können, lesen Sie diese Anleitung zu einen Social-Media-Bot mit Python erstellen .

So fügen Sie ein Textfeld in Google Docs hinzu

Verwenden Sie JSON, um Dienste zu nutzen oder bereitzustellen? Und verwenden Sie Python in Ihrem Technologie-Stack? Erkläre es in den Kommentaren unten.

Teilen Teilen Tweet Email Lohnt sich ein Upgrade auf Windows 11?

Windows wurde neu gestaltet. Aber reicht das aus, um Sie davon zu überzeugen, von Windows 10 auf Windows 11 umzusteigen?

Weiter lesen
Verwandte Themen
  • Programmierung
  • Programmierung
  • Python
Über den Autor Jay Sridhar(17 Artikel veröffentlicht) Mehr von Jay Sridhar

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren