JSON Python Parsing En enkel guide

  • Brian Curtis
  • 0
  • 1072
  • 241
Reklame

JSON (står for “JavaScript-objektnotation”) er et tekstbaseret format, der letter dataudveksling mellem forskellige applikationer. For eksempel et program skrevet i C ++ Sådan rettes Windows Visual C ++ Kørselsfejl Sådan rettes Windows Visual C ++ Kørselsfejl Visual C ++ fejl er et almindeligt problem for Windows-brugere. Men ved du hvordan man løser dem? kører på Windows kan nemt udveksle JSON-data med et program skrevet i python og køre på Linux. Dets enkelhed og fleksibilitet har ført til udbredt brug i de senere år, især fortrinsvis frem for tidligere XML-baserede formater.

Der er biblioteker og værktøjssæt til rådighed til at analysere og generere JSON fra næsten ethvert sprog og miljø. Denne artikel koncentrerer sig om metoder og problemer, der opstår ved behandling af JSON ved hjælp af python.

Nogle JSON-prøver

Den mest almindelige JSON-enhed, som du vil støde på, er en objekt: et sæt nøgleværdi-kortlægninger i formatet vist nedenfor.

person.json:

"firstName": "Alice", "lastName": "Hall", "age": 35 

Sådan kan du repræsentere en række objekter. I denne repræsentation er hvert element i arrayet et objekt. Følgende er et eksempel på lønninger til baseballspillere.

salaries.json:

["år": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "løn": 870000, "år": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "bedrost01", "løn": 550000] 

Selvfølgelig kan du også repræsentere en række skalarer. Det ser sådan ud:

["hej", "verden", 35] 

Parsing JSON i Python

Python Sådan får du Python og JavaScript til at kommunikere ved hjælp af JSON Sådan får du Python og JavaScript til at kommunikere ved hjælp af JSON I dag viser jeg dig, hvordan du bruger JSON til at sende data fra JavaScript til Python. Jeg vil dække, hvordan du opsætter en webserver sammen med al den kode, du har brug for. leverer jSON modul, der kan bruges til både at analysere JSON, såvel som til at generere JSON fra pythonobjekter og lister.

Følgende kodestykker viser, hvordan man åbner en JSON-fil og indlæser dataene i en variabel.

importer json med open ('sample.json', 'r') som fp: obj = json.load (fp) 

Når du har en streng, der indeholder JSON-data, kan du konvertere dem til et python-objekt (eller -liste) med følgende:

obj = json.loads ("" "" firstName ":" Alice "," lastName ":" Hall "," age ": 35" "") 

For at analysere en JSON URL kan du oprette et URL-objekt ved hjælp af urllib2 og brug json.load () som før.

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

Håndteringsfejl

Når JSON har fejl, får du en ValueError. Du kan håndtere det og tage korrigerende handlinger om nødvendigt.

try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") undtagen ValueError: print" error loading JSON "

Parring af JSON fra kommandolinjen

Nogle gange er det nyttigt at analysere JSON ved hjælp af kommandolinjen python, måske for at kontrollere for fejl eller for at opnå pænt indrykket output.

cat glossary.json # udskriver "glossary": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Et meta-markup-sprog, der bruges til at oprette markup-sprog som DocBook.", "GlossSee": "markup", "Acronym": "SGML", "GlossTerm": "Standard Generalised Markup Language", "Abbrev": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "title": "S", "title": "eksempelordliste" 

For at få indrykket output fra ovennævnte JSON-fil kan du gøre følgende:

python -mjson.tool glossary.json # udskriver "glossary": "GlossDiv": "GlossList": "GlossEntry": "Abbrev": "ISO 8879: 1986", "Acronym": "SGML", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Et metamarkeringssprog, der bruges til at oprette markup-sprog som DocBook." , "GlossSee": "markup", "GlossTerm": "Standard generaliseret Markup Language", "ID": "SGML", "SortAs": "SGML", "title": "S", "title ":" eksempelordliste " 

Og her er, hvordan du kan indlæse JSON-objektet i python og kun udpakke det, du har brug for.

python -c 'import json; fp = open ("ordliste.json", "r"); obj = json.load (fp); fp.close (); print obj ["ordliste"] ["titel"] '# udskriv eksempler på ordliste

Adgang til dataene

Når du har indlæst JSON-dataene i en pythonvariabel, kan du få adgang til dataene, som du ville have et hvilket som helst python-dikter (eller liste efter behov). For eksempel kan man få adgang til ovennævnte JSON-data som følger:

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

Datatyper

Datatyper bestemmes automatisk ud fra dataene. Noter det alder er parset som et heltal.

print type (obj ["firstName"]), type (obj ["lastName"]), type (obj ["age"]) # udskrifter    

Følgende konverteringstabel bruges til at konvertere fra JSON til python.

Analyse af JSON ved hjælp af en brugerdefineret klasse

Som standard parses et JSON-objekt i en python dict. Undertiden har du muligvis behov for automatisk at oprette et objekt i din egen klasse ud fra JSON-dataene. Det kan du gøre ved at specificere en object_hook funktion, der håndterer konverteringen. Følgende eksempel viser hvordan.

Her er en brugerdefineret klasse, der repræsenterer en Person.

klasse 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) 

Et eksempel på denne klasse oprettes ved at videresende de krævede argumenter som følger:

person = Person ("Crystal", "Newell", 27) 

Hvis du vil bruge denne klasse til at oprette tilfælde, når du analyserer JSON, skal du have en object_hook funktion defineret som følger: Funktionen modtager en python dict og returnerer et objekt i den rigtige klasse.

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

Du kan nu bruge dette object_hook funktion, når der kaldes på JSON-parseren.

med åben ('sample.json', 'r') som fp: obj = json.load (fp, object_hook = obj_creator) udskriv obj # prints "firstName" = "Alice", "lastName" = "Hall", " alder "= 35 

Eksempler på JSON-brug

JSON er ekstremt populær i dag. Mange websteder og SaaS-applikationer (Software As A Service) tilbyder JSON-output, som kan forbruges direkte af applikationer. Nogle af de offentligt tilgængelige inkluderer:

  • StackOverflow / StackExchange. Her er en URL, der returnerer en liste over spørgsmål i JSON-format.
  • GitHub tilbyder en JSON api på https://developer.github.com/v3/.
  • Og her er Flickr API: https://developer.yahoo.com/flickr/.

Hvis du leder efter flere eksempler på, hvordan du bruger det godt, kan du se denne vejledning til opbygning af et socialt mediebot ved hjælp af Python.

Bruger du JSON til at forbruge eller levere tjenester? Og bruger du python i din teknologiback? Forklar det i kommentarerne nedenfor.




Endnu ingen kommentarer

Om moderne teknologi, enkel og overkommelig.
Din guide i en verden af moderne teknologi. Lær hvordan du bruger de teknologier og gadgets, der omgiver os hver dag, og lær, hvordan du finder interessante ting på Internettet.