JSON Python Parsing En enkel guide
JSON (står for “JavaScript Objekt Notation”) er et tekstbasert format som letter datautveksling mellom ulike applikasjoner. For eksempel, et program skrevet i C ++ Slik løser du Windows Visual C ++ Runtime-feil Slik løser du Windows Visual C ++ Runtime-feil Visual C ++-feil er et vanlig problem for Windows-brukere. Men vet du hvordan du skal fikse dem? Les Mer som kjører på Windows, kan enkelt utveksle JSON-data med et program skrevet i python og kjører på Linux. Dens enkelhet og fleksibilitet har ført til utbredt bruk de siste årene, særlig i forhold til tidligere XML-baserte formater.
Det finnes biblioteker og verktøy for å analysere og generere JSON fra nesten hvilket som helst språk og miljø. Denne artikkelen konsentrerer seg om metoder og problemer som oppstår ved behandling av JSON ved hjelp av python.
Noen JSON-prøver
Den vanligste JSON-enheten du vil støte på er en gjenstand: et sett med nøkkelverdier mappings i formatet som er vist nedenfor.
person.json:
"firstName": "Alice", "LastName": "Hall", "alder": 35
Slik kan du representere en rekke objekter. I denne representasjonen er hvert element i gruppen et objekt. Følgende er et utvalg av lønninger til baseballspillere.
salaries.json:
["år": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "lønn": 870000, "år": 1985, "teamId" "ATL", "leagueId": "NL", "playerId": "bedrost01", "lønn": 550000]
Selvfølgelig kan du også representere en rekke skalarer. Det ser slik ut:
["hei", "verden", 35]
Parsing JSON i Python
Python Hvordan få Python og JavaScript til å kommunisere ved hjelp av JSON Hvordan få Python og JavaScript til å kommunisere ved hjelp av JSON I dag vil jeg vise deg hvordan du bruker JSON til å sende data fra JavaScript til Python. Jeg skal dekke hvordan du konfigurerer en webserver, sammen med all koden du trenger. Les mer gir json modul som kan brukes til både parse JSON, samt generere JSON fra python objekter og lister.
Følgende kodestykke viser hvordan du åpner en JSON-fil og laster dataene inn i en variabel.
importer json med åpen ('sample.json', 'r') som fp: obj = json.load (fp)
Når du har en streng som inneholder JSON-dataene, kan du konvertere den til et pythonobjekt (eller en liste) med følgende:
obj = json.loads ("" "" firstName ":" Alice "," LastName ":" Hall "," alder ": 35" "")
Hvis du vil analysere en JSON-URL, kan du opprette et URL-objekt ved hjelp av urllib2 og bruk json.load () som før.
importer urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') obj = json.load (url)
Håndtering av feil
Når JSON har feil, får du en ValueError. Du kan takle det og ta korrigerende tiltak hvis nødvendig.
prøv: obj = json.loads ("" "" firstName ":" Alice "," LastName: "Hall", "age": 35 "" ") bortsett fra ValueError: print" error loading JSON "
Parsing JSON fra kommandolinjen
Noen ganger er det nyttig å analysere JSON ved hjelp av python-kommandolinjen, kanskje for å sjekke om feil eller for å få pent innspilt utgang.
cat glossary.json # utskrifter "glossDiv": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para" "Et meta-markup-språk som brukes til å opprette oppslagsspråk som DocBook.", "GlossSee": "markup", "Acronym": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Forkortet" "ISO 8879: 1986", "SorterAs": "SGML", "ID": "SGML", "tittel": "S", "tittel": "eksempelordliste"
For å få innrykket utgang fra den ovennevnte JSON-filen, kan du gjøre følgende:
python -mjson.tool glossary.json # utskrifter "glossary": "GlossDiv": "GlossList": "GlossEntry": "Forkortelse": "ISO 8879: 1986", "Akronym": "SGML" "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Et meta-markup-språk, brukes til å opprette oppmerkningsspråk som DocBook." "GlossSee": "markup", "GlossTerm": "Standard Generalized Markup Language", "ID": "SGML", "SorterAs": "SGML", "tittel": "S", "tittel ":" Eksempelordliste "
Og her er hvordan du kan laste JSON-objektet inn i python og trekke ut bare det du trenger.
python -c 'import json; fp = åpen ("glossary.json", "r"); obj = json.load (fp); fp.close (); skriv obj ["ordliste"] ["title"] '# utskriftereksempelordliste
Å få tilgang til dataene
Når du har lastet inn JSON-dataene i en pythonvariabel, kan du få tilgang til dataene som du ville ha en python dikt (eller liste som det måtte være). For eksempel kan de ovennevnte JSON-dataene fås som følger:
firstName = obj ["firstName"] lastName = obj ["Hall"] alder = obj ["alder"]
Datatyper
Datatyper bestemmes automatisk av dataene. Noter det alder blir analysert som et heltall.
utskriftstype (obj ["firstName"]), type (obj ["lastName"]), type (obj ["age"]) # utskrifter
Følgende konverteringstabell brukes til å konvertere fra JSON til python.
Parsing JSON Bruke en egendefinert klasse
Som standard blir et JSON-objekt analysert i en python dict. Noen ganger kan det hende du må opprette et objekt av din egen klasse automatisk fra JSON-dataene. Du kan gjøre det ved å spesifisere en object_hook funksjon som håndterer konverteringen. Følgende eksempel viser hvordan.
Her er en tilpasset klasse som representerer en Person.
klasse Person: def __init __ (selv, fornavn, etternavn, alder): self.firstName = firstName self.lastName = lastName self.age = alder def __str __ (selv): returnere "firstName" = "0" "lastName" = "1", "alder" = 2. format (selv.fornavn, selv.lastnavn, selvstart)
En forekomst av denne klassen er opprettet ved å sende de nødvendige argumentene som følger:
person = Person ("Crystal", "Newell", 27)
Hvis du vil bruke denne klassen til å lage forekomster når du analyserer JSON, trenger du en object_hook funksjon definert som følger: Funksjonen mottar en python dict og returnerer et objekt av riktig klasse.
def obj_creator (d): return Person (d ['firstName'], d ['lastName'], d ['age'])
Du kan nå bruke dette object_hook fungere når du bruker JSON-parseren.
med åpen ('sample.json', 'r') som fp: obj = json.load (fp, object_hook = obj_creator) print obj # utskrifter "firstName" = "Alice", "lastName" = "Hall" alder "= 35
Eksempler på JSON bruk
JSON er ekstremt populært i dag. Mange nettsteder og SaaS (Software As A Service) -applikasjoner tilbyr JSON-utgang som kan forbrukes direkte av applikasjoner. Noen av de offentlig tilgjengelige inkluderer:
- Stackoverflow / StackExchange. Her er en URL som returnerer en liste over spørsmål i JSON-format.
- GitHub tilbyr en JSON api på https://developer.github.com/v3/.
- Og her er Flickr API: https://developer.yahoo.com/flickr/.
Bruker du JSON å konsumere eller levere tjenester? Og bruker du python i teknologistakken din? Forklar i kommentarene nedenfor.
Utforsk mer om: Programmering, Python.