Zephyrnet-logo

4 trucs om JSON effectief te gebruiken in Python

Datum:

4 trucs om JSON effectief te gebruiken in Python

Werken met JSON in Python is een koud kunstje, hiermee kunt u meteen aan de slag.


By Erik van Baaren, Python 3-gids

Figuur

Illustratie door auteur

Python heeft twee gegevenstypen die samen de perfecte tool vormen om met JSON te werken: woordenboeken en lijsten. Laten we eens kijken hoe:

  • laad en schrijf JSON
  • Print en valideer JSON mooi op de opdrachtregel
  • Voer geavanceerde query's uit op JSON-documenten met behulp van JMESPath

1. JSON decoderen

 
Python wordt geleverd met een krachtig en elegant JSON-bibliotheek. Het kan worden geïmporteerd met:

import json


Het decoderen van een reeks JSON is net zo eenvoudig als json.loads(…) (afkorting van load string).

Het converteert:

  • objecten voor woordenboeken
  • arrays naar lijsten,
  • booleans, integers, floats en strings worden herkend voor wat ze zijn en worden in Python omgezet naar de juiste typen
  • Elke null wordt omgezet in Python's None  type dan:

Hier is een voorbeeld van json.loads in actie:

>>> import json
>>> jsonstring = '{"name": "erik", "age": 38, "married": true}'
>>> json.loads(jsonstring)
{'name': 'erik', 'age': 38, 'married': True}


2. JSON coderen

 
Andersom is net zo eenvoudig. Gebruik json.dumps(…) (afkorting van 'dump to string) om een ​​Python-object dat bestaat uit woordenboeken, lijsten en andere native types om te zetten in een string:

>>> myjson = {'name': 'erik', 'age': 38, 'married': True}
>>> json.dumps(myjson) '{"name": "erik", "age": 38, "married": true}'


Dit is exact hetzelfde document, terug geconverteerd naar een string! Als u uw JSON-document leesbaarder wilt maken voor mensen, gebruikt u de inspringingsoptie:

>>> print(json.dumps(myjson, indent=2))
{ "name": "erik", "age": 38, "married": true
}


3. Command-line gebruik

 
De JSON-bibliotheek kan ook worden gebruikt vanaf de opdrachtregel tot bevestigen en mooie print uw JSON:

$ echo "{ "name": "Monty", "age": 45 }" | python3 -m json.tool
{ "name": "Monty", "age": 45
}


Als een kanttekening: als je een Mac of Linux gebruikt en de kans krijgt om het te installeren, kijk dan in het jq opdrachtregelprogramma. Het is gemakkelijk te onthouden, geeft kleur aan uw uitvoer en heeft tal van extra functies, zoals uitgelegd in mijn artikel over het worden van een opdrachtregelninja.

Figuur

jq zal uw JSON standaard mooi afdrukken

4. Zoeken via JSON met JMESPath

Figuur

screenshot door auteur

JMESPath is een querytaal voor JSON. Hiermee kunt u eenvoudig de gegevens die u nodig heeft uit een JSON-document halen. Als je ooit eerder met JSON hebt gewerkt, weet je waarschijnlijk dat het gemakkelijk is om een ​​geneste waarde te krijgen.

Bijvoorbeeld: doc["person"]["age"] krijgt u de geneste waarde voor leeftijd in een document dat er als volgt uitziet:

{ "persons": { "name": "erik", "age": "38" }
}


Maar wat als u alle leeftijdsvelden wilt extraheren uit een reeks personen, in een document als dit:

{ "persons": [ { "name": "erik", "age": 38 }, { "name": "john", "age": 45 }, { "name": "rob", "age": 14 } ]
}


We zouden een simpele lus en lus over alle personen kunnen schrijven. Makkelijk. Maar loops zijn traag en introduceren complexiteit in uw code. Dit is waar JMESPath binnenkomt!

Met deze JMESPath-expressie wordt de klus geklaard:

persons[*].age


Het retourneert een array met alle leeftijden: [38, 45, 14].

Stel dat u de lijst wilt filteren en alleen de leeftijden wilt ophalen voor mensen met de naam 'erik'. U kunt dit doen met een filter:

persons[?name=='erik'].age


Zie je hoe natuurlijk en snel dit is?

JMESPath maakt geen deel uit van de Python-standaardbibliotheek, wat betekent dat u het moet installeren met pip or pipenv. Bijvoorbeeld wanneer gebruik pip in in virtuele omgeving:

$ pip3 install jmespath
$ python3
Python 3.8.2 (default, Jul 16 2020, 14:00:26)
>>> import jmespath
>>> j = { "people": [{ "name": "erik", "age": 38 }] }
>>> jmespath.search("people[*].age", j)
[38]
>>>


U bent nu klaar om te experimenteren! Zorg ervoor dat u de interactieve tutorial en bekijk de voorbeelden op de JMESPath-site!

Als je meer JSON-tips of -trucs hebt, deel deze dan in de comments!

Volg mij on Twitter om eerst mijn nieuwste artikelen te krijgen en ervoor te zorgen bezoek mijn Python 3-gids. Dit artikel is oorspronkelijk gepubliceerd er .

 
Het belangrijkste Python-concept dat u moet begrijpen
Leer alles over de bouwstenen van de Python-taal

 
Bio: Erik van Baaren is een software engineer en de webmaster van Python 3-gids, waar je zowel beginners als gevorderde Python-onderwerpen kunt leren. Hij is ook een schrijver van technische artikelen over Medium.com.

ORIGINELE. Met toestemming opnieuw gepost.

Zie ook:

Bron: https://www.kdnuggets.com/2020/09/4-tricks-effectively-use-json-python.html

spot_img

Laatste intelligentie

spot_img