Hvordan lese og skrive Json -filer i Python

How Read Write Json Files Python



Denne artikkelen vil forklare hvordan du håndterer JSON -filer og data på Python -programmeringsspråk. Python kommer med en innebygd json-modul som gjør håndtering av JSON-data enkelt og greit.

Om JSON

JSON (JavaScript Object Notation) er et filformat og datalagringsstandard som bruker nøkkelverdi-par for å lagre og utveksle data. Det er det mest brukte datautvekslingsformatet, ofte sett i RESTful APIer, lette databaser, konfigurasjonsfiler og annen offline eller online programvare som må lagre, hente og utveksle data. De fleste programmeringsspråk inkluderer biblioteker for å analysere og skrive JSON -data som standard, og JSON er et programmeringsspråk agnostisk dataformat. Verdier som er lagret i en JSON -fil eller nyttelast inneholder vanligvis strenger, tall og datatyper som kan serieres som lister (matriser).







JSON og Python ordbøker

JSON -data i python konverteres til et ordbokobjekt ved hjelp av lastemetode. Det er ofte sett at noen mennesker likestiller json -data og en pythonordbok, ettersom syntaksen for å definere dem begge er nesten den samme. Imidlertid er json -data ikke annet enn en tekststreng strukturert i en stiv syntaks mens en pythonordbok er et datastrukturobjekt som er lagret i minnet. Hvis du vil lagre ordbokdata i en tekstfil eller sende dem til et annet ikke-python-program, må du først konvertere dem til en tekststreng (byte). Denne dumpede / konverterte tekststrengen er definert i JSONs standardsyntaks, og prosessen med å konvertere en pythonordbok til en json -kompatibel streng kalles serialisering.



Lese og dumpe JSON -data i Python

JSON -data kan hentes som et svar fra en server, leses fra fil, skåret fra URL -spørringsparametere og så videre. Denne artikkelen vil hovedsakelig fokusere på å lese json -data fra en lokalt lagret fil. La oss anta at en test.json -fil inneholder følgende data:



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

For å lese test.json -filen i python, kan du bruke koden nedenfor:





importjson

med åpen ('test.json') somf:
data=json.laste(f)

dump=json.dumper(data)

skrive ut (data)
skrive ut (type(data))
skrive ut (dump)
skrive ut (type(dump))

Den første linjen i koden ovenfor importerer json -modulen. På neste linje brukes med åpen for å trygt lese filinnholdet. Innenfor med åpen blokk brukes json.load -metoden for å lese og lagre filinnhold i datavariabelen. Data lastet i forrige trinn konverteres tilbake til json -streng ved hjelp av json.dump -metoden. Når du kjører koden ovenfor, vises følgende utgang:

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

Legg merke til i utdataene ovenfor at json.load -metoden leser rå json -data til en pythonordbok mens json.dumps -metoder konverterer en ordbok til en streng som er kompatibel med JSON -struktur. Når et JSON-objekt har blitt konvertert til et pythonordbokobjekt, kan du bruke innebygde pythonordbokmetoder for å håndtere dataene. Eksemplet ovenfor er ganske grunnleggende og inkluderer ikke matriser i JSON -data eller nestede verdier. Men innen python kan du håndtere disse verdiene som alle andre nestede ordbøker og lister.



Sortering og pen utskrift av JSON -data

Json.dump -metoden støtter noen valgfrie parametere for sortering av nøkler og pen utskrift for bedre lesbarhet.

importjson

med åpen ('test.json') somf:
data=json.laste(f)

dump=json.dumper(data,sorter_nøkler=ekte,innrykk=4)
skrive ut (dump)

Koden ovenfor viser følgende utgang:

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

Konvertering av datatype

Listen nedenfor illustrerer hvordan JSON -verdier konverteres til python -objekter og omvendt.

JSON Python
streng s
Nummer int eller flyte
sant, usant Sant, usant
null Ingen
matrise liste
gjenstand dict

Json.tool kommandolinjemodul

Python inneholder et fint kommandolinjeverktøy json.tool som kan brukes til å validere og pent skrive ut JSON -strenger og filer.

$ ekko'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.verktøy

Å kjøre kommandoen ovenfor viser deg følgende utdata:

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

Du kan også bruke json.tool med JSON -filer. Erstatt in_file og out_file i kommandoen nedenfor med de ønskede verdiene:

$ python3 -m json.verktøyinn_fil ut_fil

Annet enn pen utskrift, sortering og validering av JSON -data, gjør json.tool ikke noe annet. Så hvis du vil manipulere noen JSON-data, må du skrive din egen tilpassede kode ved hjelp av den innebygde JSON-modulen.