Python

Json-bestanden lezen en schrijven in Python

Json-bestanden lezen en schrijven in Python
In dit artikel wordt uitgelegd hoe u met JSON-bestanden en -gegevens omgaat in de programmeertaal Python. Python wordt geleverd met een ingebouwde "json" -module die het verwerken van JSON-gegevens eenvoudig en duidelijk maakt.

Over JSON

JSON (JavaScript Object Notation) is een standaard voor bestandsindelingen en gegevensopslag die sleutel-waardeparen gebruikt om gegevens op te slaan en uit te wisselen. Het is het meest gebruikte formaat voor gegevensuitwisseling, vaak te zien in RESTful API's, lichtgewicht databases, configuratiebestanden en andere offline of online software die gegevens moet opslaan, ophalen en uitwisselen. De meeste programmeertalen bevatten bibliotheken om standaard JSON-gegevens te ontleden en te schrijven en JSON is een programmeertaal-agnostisch gegevensformaat. Waarden die zijn opgeslagen in een JSON-bestand of payload bevatten meestal tekenreeksen, getallen en serialiseerbare gegevenstypen zoals lijsten (arrays).

JSON- en Python-woordenboeken

JSON-gegevens in python worden geconverteerd naar een woordenboekobject met behulp van de "load" -methode. Het wordt vaak gezien dat sommige mensen json-gegevens en een python-woordenboek gelijkstellen, omdat de syntaxis om beide te definiëren bijna hetzelfde is. Json-gegevens zijn echter niets anders dan een tekstreeks die is gestructureerd in een rigide syntaxis, terwijl een python-woordenboek een gegevensstructuurobject is dat in het geheugen is opgeslagen. Als u woordenboekgegevens in een tekstbestand wilt opslaan of naar een ander niet-python-programma wilt sturen, moet u dit eerst converteren naar een tekstreeks (bytes). Deze gedumpte / geconverteerde tekststring is gedefinieerd in de standaardsyntaxis van JSON en het proces van het converteren van een python-woordenboek naar een json-compatibele string wordt serialisatie genoemd.

JSON-gegevens lezen en dumpen in Python

JSON-gegevens kunnen worden opgehaald als een antwoord van een server, uit een bestand worden gelezen, uit URL-queryparameters worden gesneden, enzovoort and. Dit artikel richt zich voornamelijk op het lezen van json-gegevens uit een lokaal opgeslagen bestand. Laten we aannemen dat een “test”.json”-bestand bevat de volgende gegevens:

"codename": "Eoan Hermelijn", "versie": "Ubuntu 19.10"

Om de test te lezen.json-bestand in python, kunt u de onderstaande code gebruiken:

import json
met open ("test.json") als f:
data = json.belasting (v)
dump = json.stortplaatsen (gegevens)
afdrukken (gegevens)
afdrukken (type(gegevens))
afdrukken (dumpen)
afdrukken (type(dump))

De eerste regel in de bovenstaande code importeert de json-module. In de volgende regel wordt "met open" gebruikt om de bestandsinhoud veilig te lezen. Binnen het "met open" blok, "json.load"-methode wordt gebruikt om de bestandsinhoud te lezen en op te slaan in de "data"-variabele. Gegevens die in de vorige stap zijn geladen, worden terug geconverteerd naar json-string met behulp van de "json.dump” methode. Als u de bovenstaande code uitvoert, wordt de volgende uitvoer weergegeven:

'codename': 'Eoan Hermelijn', 'versie': 'Ubuntu 19.10'

"codename": "Eoan Hermelijn", "versie": "Ubuntu 19.10"

Merk in de bovenstaande uitvoer op dat de "json.load"-methode leest onbewerkte json-gegevens in een python-woordenboek terwijl "json".dumps'-methoden converteert een woordenboek naar een tekenreeks die compatibel is met de JSON-structuur. Nadat een JSON-object is geconverteerd naar een python-woordenboekobject, kunt u ingebouwde python-woordenboekmethoden gebruiken om de gegevens te verwerken. Het bovenstaande voorbeeld is vrij eenvoudig en bevat geen arrays in JSON-gegevens of geneste waarden. Binnen python kunt u deze waarden echter net zo verwerken als alle andere geneste woordenboeken en lijsten.

Sorteren en mooi afdrukken van JSON-gegevens

De "json".dump”-methode ondersteunt enkele optionele parameters voor het sorteren van sleutels en het mooi afdrukken van de uitvoer voor verbeterde leesbaarheid.

import json
met open ("test.json") als f:
data = json.belasting (v)
dump = json.dumps(data, sort_keys=True, indent=4)
afdrukken (dumpen)

De bovenstaande code toont de volgende uitvoer:


"codenaam": "Eoan Hermelijn",
"versie": "Ubuntu 19.10"

Conversies van gegevenstypes

De onderstaande lijst illustreert hoe JSON-waarden worden geconverteerd naar python-objecten en vice versa.

JSON Python
draad str
aantal int of float
waar onwaar Waar onwaar
nul Geen
reeks lijst
voorwerp dictaat

Json.tool Opdrachtregelmodule

Python bevat een mooi opdrachtregelprogramma "json.tool" die kan worden gebruikt om JSON-strings en -bestanden te valideren en mooi af te drukken.

$ echo '"codenaam": "Eoan Ermine", "versie": "Ubuntu 19.10"' | python3 -m json.gereedschap

Als u de bovenstaande opdracht uitvoert, ziet u de volgende uitvoer:


"codenaam": "Eoan Hermelijn",
"versie": "Ubuntu 19.10"

Je kunt ook json . gebruiken.tool met JSON-bestanden. Vervang "in_file" en "out_file" in de onderstaande opdracht door de gewenste waarden:

$ python3 -m json.gereedschap in_bestand uit_bestand

Behalve mooi afdrukken, sorteren en valideren van JSON-gegevens, is json.tool doet niets anders. Dus als u JSON-gegevens wilt manipuleren, moet u uw eigen aangepaste code schrijven met behulp van de ingebouwde JSON-module.

Strijd om Wesnoth 1.13.6 Ontwikkeling vrijgegeven
Strijd om Wesnoth 1.13.6 die vorige maand werd uitgebracht, is de zesde ontwikkelingsrelease in de 1.13.x-serie en het levert een aantal verbeteringen...
Hoe League Of Legends op Ubuntu 14 te installeren.04
Als je fan bent van League of Legends, dan is dit een kans voor jou om League of Legends te testen. Merk op dat LOL wordt ondersteund op PlayOnLinux a...
Installeer de nieuwste OpenRA Strategy Game op Ubuntu Linux
OpenRA is een Libre/Free Real Time Strategy-game-engine die de vroege Westwood-games nabootst, zoals de klassieke Command & Conquer: Red Alert. Gedist...