JSON Python Parsing En enkel guide
JSON (står för “JavaScript Objekt Notation”) är ett textbaserat format som underlättar datautbyte mellan olika applikationer. Till exempel en applikation som skrivs i C ++ Hur man fixar Windows Visual C ++ Runtime Fel Hur man fixar Windows Visual C ++ Runtime Fel Visual C ++ Fel är ett vanligt problem för Windows-användare. Men vet du hur man fixar dem? Läs mer på Windows kan enkelt byta ut JSON-data med en applikation som skrivs i python och körs på Linux. Dess enkelhet och flexibilitet har lett till omfattande användning under de senaste åren, speciellt i stället för tidigare XML-baserade format.
Det finns bibliotek och verktyg för att analysera och generera JSON från nästan vilket språk som helst. Denna artikel koncentrerar sig på metoder och problem som uppstår vid behandling av JSON med python.
Några JSON-prov
Den vanligaste JSON-enheten som du kommer att stöta på är en objekt: en uppsättning nyckelvärdesmappningar i det format som visas nedan.
person.json:
"firstName": "Alice", "LastName": "Hall", "ålder": 35
Så här kan du representera en rad objekt. I denna representation är varje objekt i matrisen ett objekt. Följande är ett urval av löner för basebollspelare.
salaries.json:
["år": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "lön": 870000, "år": 1985, "teamId" "ATL", "leagueId": "NL", "playerId": "bedrost01", "lön": 550000]
Naturligtvis kan du representera en uppsättning scalar också. Det ser ut så här:
["hej", "värld", 35]
Parsing JSON i Python
Python Hur får man Python och JavaScript att kommunicera med JSON Hur får man Python och JavaScript att kommunicera med JSON Idag visar jag dig hur du använder JSON för att skicka data från JavaScript till Python. Jag kommer att täcka hur du installerar en webbserver, tillsammans med all kod du behöver. Läs mer ger json modul som kan användas för att både parsa JSON, samt skapa JSON från pythonobjekt och listor.
Följande kodsekvens visar hur man öppnar en JSON-fil och laddar in data i en variabel.
importera json med öppen ('sample.json', 'r') som fp: obj = json.load (fp)
När du har en sträng som innehåller JSON-data kan du konvertera den till ett pythonobjekt (eller en lista) med följande:
obj = json.loads ("" "" firstName ":" Alice "," LastName ":" Hall "," ålder ": 35" "")
För att analysera en JSON-URL kan du skapa ett URL-objekt med urllib2 och använda json.load () som förut.
importera urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') obj = json.load (url)
Hantera fel
När JSON har fel får du en ValueError. Du kan hantera det och vidta korrigerande åtgärder om det behövs.
försök: obj = json.loads ("" "" firstName ":" Alice "," LastName: "Hall", "age": 35 "" ") utom ValueError: print" error loading JSON "
Parsing JSON från kommandoraden
Ibland är det användbart att analysera JSON med hjälp av python-kommandoraden, kanske för att söka efter fel eller för att få snygg indirekt utdata.
kattordlista.json # utskrifter "glossDiv": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para" "Ett meta-markup-språk som används för att skapa markup språk som DocBook.", "GlossSee": "markup", "Acronym": "SGML", "GlossTerm": "Standard General Markup Language", "Förkortat" "ISO 8879: 1986", "SorterAs": "SGML", "ID": "SGML", "title": "S", "title": "exempelordlista"
För att få inmatad utmatning från ovanstående JSON-fil kan du göra följande:
GlossDist "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Ett meta-markup-språk som används för att skapa markup språk som DocBook." "GlossSee": "markup", "GlossTerm": "Standard Generalized Markup Language", "ID": "SGML", "SortAs": "SGML", "title": "S", "title ":" exempelordlista "
Och här är hur du kan ladda JSON-objektet till python och extrahera bara vad du behöver.
python -c 'import json; fp = öppen ("glossary.json", "r"); obj = json.load (fp); fp.close (); skriv obj ["glossary"] ["title"] "# utskrifter exempel ordlista
Åtkomst till data
När du har laddat JSON-data till en pythonvariabel, kan du komma åt data som du skulle ha någon python dict (eller lista som det är fallet). Till exempel kan ovanstående JSON-data nås på följande sätt:
firstName = obj ["firstName"] lastName = obj ["Hall"] ålder = obj ["ålder"]
Datatyper
Datatyper bestäms automatiskt av data. Anteckna det ålder analyseras som ett heltal.
skriv typ (obj ["firstName"]), typ (obj ["lastName"]), typ (obj ["age"]) # utskrifter
Följande konverteringstabell används för att konvertera från JSON till python.
Parsing JSON Använda en anpassad klass
Som standard analyseras ett JSON-objekt i en python dict. Ibland kan du behöva skapa ett objekt av din egen klass automatiskt från JSON-data. Du kan göra det genom att ange en object_hook funktion som hanterar omvandlingen. Följande exempel visar hur.
Här är en anpassad klass som representerar en Person.
klass Person: def __init __ (själv, förnamn, efternamn, ålder): self.firstName = firstName self.lastName = lastName self.age = age def __str __ (själv): returnera "firstName" = "0" "lastName" = "1", "ålder" = 2. format (self.firstName, self.lastName, self.age)
En förekomst av denna klass skapas genom att passera de nödvändiga argumenten enligt följande:
person = Person ("Crystal", "Newell", 27)
För att använda denna klass för att skapa instanser när man analyserar JSON behöver du en object_hook funktion definierad enligt följande: Funktionen får en python dict och returnerar ett objekt av rätt klass.
def obj_creator (d): retur Person (d ['firstName'], d ['lastName'], d ['age'])
Du kan nu använda det här object_hook funktion när man anropar JSON-parsern.
med öppna ('sample.json', 'r') som fp: obj = json.load (fp, object_hook = obj_creator) print obj # utskrifter "firstName" = "Alice", "lastName" = "Hall" ålder "= 35
Exempel på JSON-användning
JSON är extremt populär idag. Många webbplatser och SaaS-program (Software As A Service) erbjuder JSON-utdata som kan konsumeras direkt av applikationer. Några av de allmänt tillgängliga som är:
- Stackoverflow / StackExchange. Här är en URL som returnerar en lista med frågor i JSON-format.
- GitHub erbjuder en JSON api på https://developer.github.com/v3/.
- Och här är Flickr API: https://developer.yahoo.com/flickr/.
Använder du JSON för att konsumera eller tillhandahålla tjänster? Och använder du python i din teknik stack? Förklara i kommentarerna nedan.
Utforska mer om: Programmering, Python.