Sådan læses og skrives Json -filer i Python

How Read Write Json Files Python



Denne artikel vil forklare, hvordan man håndterer JSON -filer og data i Python -programmeringssprog. Python leveres med et indbygget json-modul, der gør håndtering af JSON-data let og ligetil.

Om JSON

JSON (JavaScript Object Notation) er et filformat og datalagringsstandard, der bruger nøgleværdipar til at gemme og udveksle data. Det er det mest udbredte dataudvekslingsformat, der ofte ses i RESTful API'er, lette databaser, konfigurationsfiler og anden offline eller online software, der skal gemme, hente og udveksle data. De fleste programmeringssprog inkluderer biblioteker til at analysere og skrive JSON -data som standard, og JSON er et programmeringssprogs agnostisk dataformat. Værdier, der er gemt i en JSON -fil eller nyttelast, indeholder normalt strenge, tal og datatyper, der kan serialiseres, f.eks. Lister (arrays).







JSON og Python ordbøger

JSON -data i python konverteres til et ordbogsobjekt ved hjælp af indlæsningsmetode. Det ses ofte, at nogle mennesker sidestiller json -data og en pythonordbog, da syntaksen til at definere dem begge er næsten den samme. Imidlertid er json -data ikke andet end en tekststreng struktureret i en stiv syntaks, mens en pythonordbog er et datastrukturobjekt, der er gemt i hukommelsen. Hvis du vil gemme ordbogsdata i en tekstfil eller sende dem til et andet ikke-python-program, skal du først konvertere dem til en tekststreng (bytes). Denne dumpede / konverterede tekststreng er defineret i JSONs standardsyntaks, og processen med at konvertere en pythonordbog til en json -kompatibel streng kaldes serialisering.



Læsning og dumpning af JSON -data i Python

JSON -data kan hentes som et svar fra en server, læses fra fil, skåret fra URL -forespørgselsparametre og så videre. Denne artikel vil hovedsageligt fokusere på at læse json -data fra en lokalt gemt fil. Lad os antage, at en test.json -fil indeholder følgende data:



{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}

For at læse test.json -filen i python kan du bruge koden herunder:





importerejson

med åben ('test.json') somf:
data=json.belastning(f)

dump=json.lossepladser(data)

Print (data)
Print (type(data))
Print (dump)
Print (type(dump))

Den første linje i ovenstående kode importerer json -modul. I den næste linje bruges med åben til sikkert at læse filindholdet. Inden for met open block bruges json.load -metoden til at læse og gemme filindhold i datavariablen. Data indlæst i det foregående trin konverteres tilbage til json -streng ved hjælp af metoden json.dump. Kørsel af koden ovenfor viser følgende output:

{'kodenavn':'Eoan Ermine', 'version':'Ubuntu 19.10'}
<klasse 'dikter'>
{'kodenavn':'Eoan Ermine', 'version':'Ubuntu 19.10'}
<klasse 'str'>

Bemærk i output ovenfor, at json.load -metoden læser rå json -data til en pythonordbog, mens json.dumps -metoder konverterer en ordbog til en streng, der er kompatibel med JSON -struktur. Når et JSON-objekt er blevet konverteret til et pythonordbogsobjekt, kan du bruge indbyggede pythonordbogsmetoder til at håndtere dataene. Eksemplet ovenfor er temmelig grundlæggende og inkluderer ikke arrays i JSON -data eller indlejrede værdier. Men inden for python kan du håndtere disse værdier som alle andre indlejrede ordbøger og lister.



Sortering og smuk udskrivning af JSON -data

Json.dump -metoden understøtter nogle valgfrie parametre til sortering af nøgler og smuk udskrivning af output for forbedret læsbarhed.

importerejson

med åben ('test.json') somf:
data=json.belastning(f)

dump=json.lossepladser(data,sort_nøgler=Sand,indrykning=4)
Print (dump)

Koden ovenfor viser følgende output:

{
'codename': 'Eoan Ermine',
'version': 'Ubuntu 19.10'
}

Datatypekonverteringer

Listen nedenfor illustrerer, hvordan JSON -værdier konverteres til python -objekter og omvendt.

JSON Python
snor s
nummer int eller float
sandt falsk Sandt falsk
nul Ingen
array liste
objekt dikt

Json.tool kommandolinjemodul

Python indeholder et flot kommandolinjeværktøj json.tool, der kan bruges til at validere og smukt udskrive JSON -strenge og filer.

$ ekko'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.værktøj

Kørsel af kommandoen ovenfor viser dig følgende output:

{
'codename': 'Eoan Ermine',
'version': 'Ubuntu 19.10'
}

Du kan også bruge json.tool med JSON -filer. Erstat in_file og out_file i kommandoen herunder med dine ønskede værdier:

$ python3 -m json.værktøjin_file out_file

Udover smuk udskrivning, sortering og validering af JSON -data gør json.tool ikke noget andet. Så hvis du vil manipulere eventuelle JSON-data, skal du skrive din egen brugerdefinerede kode ved hjælp af det indbyggede JSON-modul.