Hur man arbetar med JSON-data med Python

Denna handledning visar hur enkelt det är att använda Python programmeringsspråk för att arbeta med JSON data.

Innan jag börjar ämnet, låt oss definiera kort vad vi menar med JSON. Låt oss se hur JSONs huvudwebbplats definierar det:

JSON (JavaScript Object Notation) är ett lättviktsformat för datautbyte. Det är lätt för människor att läsa och skriva. Det är lätt för maskiner att analysera och generera. Det är baserat på en delmängd av JavaScript-programmeringsspråket, Standard ECMA-262 3: e utgåvan - december 1999. JSON är ett textformat som är helt språkoberoende men använder konventioner som är kända för programmerare av C-familjen av språk, inklusive C , C ++, C #, Java, JavaScript, Perl, Python och många andra. Dessa egenskaper gör JSON till ett idealiskt datautbytesspråk.

Således är JSON ett enkelt sätt att skapa och lagra datastrukturer inom JavaScript. Anledningen till att du ser JavaScript i akronyn beror på att ett JavaScript-objekt skapas när du lagrar data med JSON. Men oroa dig inte, du behöver inte känna till JavaScript för att arbeta med JSON-filer, snarare handlar det om JSON-syntaxen (format) själv.

Kortfattat är JSON ett sätt att lagra och utbyta data, vilket uppnås genom sin syntax och används i många webbapplikationer. Det fina med JSON är att det har ett mänskligt läsbart format, och det kan vara en av anledningarna till att använda den i dataöverföring, förutom effektiviteten när man arbetar med API: er.

Ett exempel på JSON-formaterad data är följande:

"name": "Frank", "age": 39, "isEmployed": true

I denna handledning visar jag dig hur du använder Python för att arbeta med JSON-filer. Så, låt oss börja!

Python och JSON

Python gör det enkelt att arbeta med JSON-filer. Modulen som används för detta ändamål är json modul. Den här modulen ska inkluderas (inbyggd) i din Python-installation, och du behöver sålunda inte installera några externa moduler som vi gjorde när vi arbetade med exempelvis PDF- och Excel-filer. Det enda du behöver för att kunna använda denna modul är att importera den:

importera json

Men vad gör json bibliotek gör? Detta bibliotek tolkar i huvudsak JSON från filer eller strängar. Det analyserar även JSON i en ordlista eller lista i Python och vice versa, som konverterar en Python-ordlista eller lista i JSON-strängar.

JSON till Python

Att läsa JSON innebär att konvertera JSON till ett Python-värde (objekt). Som nämnts ovan json biblioteket analyserar JSON i en ordlista eller lista i Python. För att göra det använder vi massor() funktion (belastning från en sträng), enligt följande:

importera json jsonData = '"namn": "Frank", "ålder": 39' jsonToPython = json.loads (jsonData)

Om du vill se utmatningen gör du a skriv ut jsonToPython, i vilket fall får du följande utdata:

u'age': 39, you'name ': u'Frank'

Dvs, data returneras som en Python-ordbok (JSON-objektdatastruktur). Så, kommer uttalandet skriv ut jsonToPython ['name'] returnera någon produktionen? Fortsätt, prova det.

Python till JSON

I det föregående avsnittet såg vi hur man konverterar JSON till ett Python-värde (dvs ordbok). I det här avsnittet kommer jag att visa dig hur vi kan konvertera (koda) ett Python-värde till JSON.

Säg att vi har följande ordbok i Python:

importera json pythonDictionary = 'name': 'Bob', 'ålder': 44, 'isEmployed': True dictionaryToJson = json.dumps (pythonDictionary)

Om vi utskrifts dictionaryToJson, vi får följande JSON data:

"age": 44, "isEmployed": true, "name": "Bob"

Så denna produktion anses vara objektrepresentation av objektet (ordbok). Metoden soptippar () var nyckeln till en sådan operation.

Det är viktigt att notera på den här tiden att JSON inte kan lagra alla typer av Python-objekt, men endast följande typer: Listor; ordböcker; Booleans; Tal; Teckensträngar; och ingen. Således måste alla andra typer konverteras för att lagras i JSON.

Låt oss säga att vi har följande klass:

klass Medarbetare (objekt): def __init __ (själv, namn): self.name = namn

Låt oss säga att vi skapade ett nytt objekt Abder, som följer:

abder = Anställd ("Abder")

Vad händer om vi ville konvertera det här objektet till JSON? Det är json.dumps (Abder)? I det här fallet skulle du få ett fel som liknar följande:

Traceback (senaste samtal senast): Fil "test.py", rad 8, in  abderJson = json.dumps (abder) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", rad 243, i dumpningar returnerar _default_encoder.encode (obj) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", rad 207, i kodar chunks = self.iterencode (o, _one_shot = True) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , linje 270, i iterencode returnera _iterencode (o, 0) File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , linje 184, i standardhöjning TypeError (repr (o) + "är inte JSON-serialiserbar") TypeError: <__main__.Employee object at 0x10e74b750> är inte JSON serializable

Men finns det en lösning? Lyckligtvis finns det. Jag gillar den lösning som beskrivs på Python Tips-webbplatsen. För att lösa detta problem kan vi definiera en metod som liknar följande:

def jsonDefault (objekt): returnera objekt .__ dict__

Koda sedan objektet till JSON enligt följande:

jsonAbder = json.dumps (abder, default = jsonDefault)

Om du skriv ut jsonAbder, Du borde få följande utdata:

"namn": "Abder"

Vi har nu kodat ett Python-objekt (Abder) till JSON.

Slutsats

Från den här handledningen kan vi märka att Python gång på gång visar sig inte bara sin förmåga att arbeta med olika applikationer utan också sin flexibilitet att arbeta med olika problem medan man arbetar med en applikation, som vi såg i den sista delen av handledningen.

Om du vill veta mer om json modulen, kan du besöka dokumentationssidan.

Lär dig JavaScript: Den fullständiga guiden

Vi har byggt en komplett guide för att hjälpa dig att lära dig JavaScript, oavsett om du precis börjat som webbutvecklare eller vill utforska mer avancerade ämnen.

Lär Python

Lär dig Python med vår kompletta handledning för pythonhandledning, oavsett om du bara har börjat eller du är en erfaren kodare som vill lära dig nya färdigheter.