Hoe te werken met JSON-gegevens met behulp van Python

Deze tutorial laat zien hoe eenvoudig het is om de programmeertaal Python te gebruiken om met JSON-data te werken.

Voordat we met het onderwerp beginnen, laten we kort definiëren wat we bedoelen met JSON. Laten we eens kijken hoe JSON's hoofdwebsite dit definieert:

JSON (JavaScript Object Notation) is een lichtgewicht data-uitwisselingsformaat. Het is gemakkelijk voor mensen om te lezen en te schrijven. Het is gemakkelijk voor machines om te analyseren en te genereren. Het is gebaseerd op een subset van de JavaScript programmeertaal, standaard ECMA-262 3e editie - december 1999. JSON is een tekstindeling die volledig taalonafhankelijk is maar conventies gebruikt die bekend zijn bij programmeurs van de C-familie van talen, waaronder C , C ++, C #, Java, JavaScript, Perl, Python en vele anderen. Deze eigenschappen maken van JSON een ideale taal voor gegevensuitwisseling.

JSON is dus een eenvoudige manier om gegevensstructuren binnen JavaScript te maken en op te slaan. De reden dat u JavaScript in het acroniem ziet, is te wijten aan het feit dat een JavaScript-object wordt gemaakt bij het opslaan van gegevens met JSON. Maar maak je geen zorgen, je hoeft geen JavaScript te kennen om met JSON-bestanden te werken, het gaat veeleer om de JSON-syntaxis (indeling) zelf.

Kort gezegd, JSON is een manier waarop we gegevens opslaan en uitwisselen, wat wordt bereikt door de syntaxis ervan, en wordt gebruikt in veel webtoepassingen. Het leuke van JSON is dat het een door mensen leesbaar formaat heeft, en dit kan een van de redenen zijn om het te gebruiken bij gegevensoverdracht, naast de effectiviteit ervan bij het werken met API's..

Een voorbeeld van JSON-geformatteerde gegevens is als volgt:

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

In deze zelfstudie laat ik u zien hoe u Python kunt gebruiken om met JSON-bestanden te werken. Dus laten we beginnen!

Python en JSON

Python maakt het eenvoudig om met JSON-bestanden te werken. De module die hiervoor wordt gebruikt, is de json module. Deze module moet worden opgenomen (ingebouwd) binnen uw Python-installatie en u hoeft dus geen externe modules te installeren, zoals we bijvoorbeeld deden met PDF- en Excel-bestanden. Het enige dat u nodig heeft om deze module te gebruiken, is door het te importeren:

import json

Maar wat doet het json bibliotheek doen? Deze bibliotheek analyseert voornamelijk JSON uit bestanden of strings. Het analyseert ook JSON in een woordenboek of lijst in Python en omgekeerd, dat is het converteren van een Python-woordenboek of -lijst in JSON-strings.

JSON naar Python

JSON lezen betekent het converteren van JSON naar een Python-waarde (object). Zoals hierboven vermeld, de json bibliotheek parseert JSON in een woordenboek of lijst in Python. Om dat te doen, gebruiken we de belasting () functie (laden uit een string), als volgt:

import json jsonData = '"name": "Frank", "age": 39' jsonToPython = json.loads (jsonData)

Als u de uitvoer wilt zien, doet u a print jsonToPython, in welk geval u de volgende uitvoer krijgt:

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

Dat wil zeggen, de gegevens worden geretourneerd als een Python-woordenboek (JSON-objectgegevensstructuur). Dus, zal de verklaring print jsonToPython ['naam'] om het even welke output terugkeren? Ga je gang, probeer het eens.

Python tot JSON

In de vorige sectie hebben we gezien hoe JSON in een Python-waarde (d.w.z. woordenboek) moet worden omgezet. In deze sectie zal ik je laten zien hoe we een Python-waarde kunnen converteren (coderen) naar JSON.

Stel dat we het volgende woordenboek in Python hebben:

import json pythonDictionary = 'name': 'Bob', 'age': 44, 'isMedewerker': True dictionaryToJson = json.dumps (pythonDictionary)

Als wij afdruk dictionaryToJson, we krijgen de volgende JSON-gegevens:

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

Dus deze uitvoer wordt beschouwd als de gegevensrepresentatie van het object (woordenboek). De methode stortplaatsen () was de sleutel tot zo'n operatie.

Het is belangrijk om op dit punt op te merken dat JSON niet alle soorten Python-objecten kan opslaan, maar alleen de volgende typen: Lijsten; woordenboeken; Booleans; nummers; Tekenreeksen; en Geen. Alle andere typen moeten dus worden geconverteerd om te worden opgeslagen in JSON.

Laten we zeggen dat we de volgende klasse hebben:

class Werknemer (object): def __init __ (zelf, naam): self.name = naam

Laten we zeggen dat we een nieuw object hebben gemaakt abder, als volgt:

abder = Medewerker ('Abder')

Wat als we dit object naar JSON wilden converteren? Dat is json.dumps (abder)? In dit geval zou u een foutmelding krijgen die lijkt op het volgende:

Traceback (meest recente oproep laatste): bestand 'test.py', regel 8, in  abderJson = json.dumps (abder) Bestand "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", regel 243, in dumps return _default_encoder.encode (obj) Bestand "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", regel 207, in coderen chunks = self.iterencode (o, _one_shot = True) Bestand "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , regel 270, in iterencode return _iterencode (o, 0) Bestand "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , regel 184, zet standaard in op TypeError (repr (o) + "is niet JSON serializable") TypeError: <__main__.Employee object at 0x10e74b750> is niet JSON serialiseerbaar

Maar is er een oplossing? Gelukkig is dat zo. Ik vind de oplossing die op de website van Python Tips wordt beschreven leuk. Om dit probleem op te lossen, kunnen we een methode definiëren die lijkt op het volgende:

def jsonDefault (object): object retourneren .__ dict__

Codeer het object dan als volgt in JSON:

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

als jij print jsonAder, je zou de volgende output moeten krijgen:

"naam": "Abder"

We hebben nu een Python-object gecodeerd (abder) in JSON.

Conclusie

Uit deze tutorial kunnen we opmaken dat Python keer op keer niet alleen zijn vermogen toont om met verschillende applicaties te werken, maar ook de flexibiliteit om met verschillende problemen te werken tijdens het werken met een applicatie, zoals we in het laatste deel van de tutorial zagen.

Als u meer wilt weten over de json module kunt u de documentatiepagina bezoeken.

Leer JavaScript: de complete gids

We hebben een complete handleiding samengesteld om u te helpen JavaScript te leren, of u net bent begonnen als een webontwikkelaar of dat u meer geavanceerde onderwerpen wilt verkennen.

Leer Python

Leer Python met onze complete python-handleiding, of je nu net begint of dat je een ervaren coder bent die op zoek is naar nieuwe vaardigheden.