JSON er et populært format for datautveksling. Python har en innebygd modul for JSON, som gjør det enkelt å jobbe med JSON-data. Denne artikkelen vil guide deg gjennom alle aspekter av JSON-håndtering i Python.
Ved slutten av denne gjennomgangen vil du ha lært:
- Grunnleggende om JSON-formatet.
- Hvordan analysere og generere JSON-tekststrenger i Python.
- Hvordan lese fra og skrive til JSON-filer ved hjelp av Python.
La oss starte! 🚀
Hva er JSON?
JSON, som står for JavaScript Object Notation, er et tekstbasert format for å utveksle data. Selv om JSON ble inspirert av JavaScript-objekter, er det støttet i de fleste programmeringsspråk.
Du har sannsynligvis kommet over JSON hvis du har arbeidet med API-er eller konfigurert filer.
📑 JSON brukes til å sende og motta data når du jobber med API-er. Det er også et vanlig format for kommunikasjon mellom klient og server i applikasjoner. I tillegg kan JSON brukes til generell datalagring.
JSON-formatet ligner på en Python-ordbok. Ordbøker er innebygde datastrukturer i Python som lagrer data i nøkkel-verdi-par.
Før vi fortsetter, er det noen punkter som er verdt å merke seg:
- I Python representeres et JSON-objekt som en ordbok.
- En matrise i JSON lagres som en Python-liste.
- I JSON skrives boolske verdier som «true» og «false», mens de i Python konverteres til boolske verdier True og False.
For mer informasjon om mapping mellom JSON-datatyper og Python-datatyper, kan du se dokumentasjonen.
Siden json-modulen er en del av standardbiblioteket i Python, trenger du ikke å installere den. Du kan importere den slik:
import json
Hvordan laste inn en JSON-streng i Python
Den grunnleggende syntaksen for å laste en JSON-streng inn i Python er som følger:
<dict_obj> = json.loads(<json_str>)
Her er:
<dict_obj>
Python-ordboken der JSON-strengen skal lastes inn.<json_str>
en gyldig JSON-streng.
Dette vil laste innholdet av <json_str>
inn i Python-ordboken <dict_obj>
.
La oss se på et eksempel. Her har vi en JSON-streng kalt json_str
:
json_str=""' { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ] } '''
Følgende kode viser hvordan du kan laste JSON-strengen json_str
inn i en Python-ordbok ved hjelp av loads()
-metoden. Du kan bruke den innebygde type()
-funksjonen for å bekrefte at py_dict
er en Python-ordbok.
py_dict = json.loads(json_str) type(py_dict) # Output: dict print(py_dict) # Output {'books': [{'title': 'The Wind in the Willows', 'author': 'Kenneth Grahame', 'year': '1908'}, {'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
Som vist i koden ovenfor, blir alle feltene i JSON-strengen representert som nøkkel-verdi-par i py_dict
.
Hvordan lage JSON-strenger i Python
Anta at du har en Python-ordbok, og du ønsker å generere en JSON-streng fra den. Hvordan gjør du det?
Dette kan gjøres med dumps()
-metoden, som har denne syntaksen:
<json_str> = json.dumps(<dict_obj>)
Her:
<dict_obj>
er Python-ordboken som du vil lage JSON-strengen fra.<json_str>
er den resulterende JSON-strengen.
Så dumps()
-metoden konverterer <dict_obj>
til en JSON-streng <json_str>
.
La oss legge til en ny nøkkel kalt «filmer» til vår eksisterende Python-ordbok py_dict
, som vist i følgende kode:
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014", "lang":"en","watched":True}]
La oss nå konvertere den modifiserte ordboken til en ny JSON-streng json_str2
ved hjelp av dumps()
-metoden.
json_str2 = json.dumps(py_dict) print(json_str2) # Output {"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, {"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], "movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}
Som du ser i eksemplet ovenfor, er JSON-strengen som genereres vanskelig å lese uten riktig formatering. Du kan bruke det valgfrie parameteret indent
for å legge til innrykk.
Dette gjøres ved å sette indent
til et heltall, for eksempel 2, som vist nedenfor:
json_str2 = json.dumps(py_dict, indent = 2) print(json_str2) # Output { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ], "movies": [ { "title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true } ] }
Se hvordan utdataene er formatert med innrykk, noe som gjør det lettere å lese.
Merk: 💡 Hvis du ønsker å sortere nøklene i alfabetisk rekkefølge, kan du sette parameteren sort_keys
til True
.
Som vist i koden nedenfor, er nøklene nå sortert i alfabetisk rekkefølge.
json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True) print(json_str2) # Output { "books": [ { "author": "Kenneth Grahame", "title": "The Wind in the Willows", "year": "1908" }, { "author": "Virginia Woolf", "title": "To the Lighthouse", "year": "1927" } ], "movies": [ { "lang": "en", "title": "The Imitation Game", "watched": true, "year": "2014" } ]
Nå er nøklene sortert alfabetisk: «author», «title» og «year».
Så langt har du lært hvordan du håndterer JSON-strenger i Python. I neste avsnitt skal vi se på hvordan vi jobber med JSON-filer.
Hvordan lese en JSON-fil i Python
For å lese en JSON-fil i Python, kan du bruke følgende syntaks:
json.load(<json-file>) # where <json-file> is any valid JSON file.
Legg merke til at vi bruker load()
-metoden, og ikke loads()
-metoden. loads()
laster en JSON-streng, mens load()
laster en JSON-fil.
Det er anbefalt å bruke kontekstbehandling når du jobber med filer i Python. Her er et eksempel på hvordan du kan lese en fil uten å bruke kontekstbehandling:
my_file = open('students.json','r') contents = my_file.read() print(contents) file.close()
Hvis du glemmer å lukke filen, kan det føre til sløsing med ressurser.
Når du bruker kontekstbehandling, blir filene automatisk lukket etter at filoperasjonene er fullført.
Her er et eksempel på bruk av kontekstbehandling for å lese filer:
with open('students.json','r') as file: data = json.load(file) print(data) # Output {'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, {'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}
Når du leser fra en fil, må du spesifisere modusen som «les»-modus, indikert med «r» i koden ovenfor.
Merk: For å gjøre det enklere å navigere i gjeldende katalog, må JSON-filen være plassert i samme mappe som main.py
, som vist på bildet. Hvis JSON-filen ligger i en annen mappe, må du oppgi hele filstien.
Dette viser hvordan du leser en JSON-fil i Python.
I neste avsnitt lærer du hvordan du skriver til en JSON-fil.✍
Hvordan skrive til en JSON-fil i Python
For å skrive til en eksisterende JSON-fil eller opprette en ny JSON-fil, kan du bruke dump()
-metoden som vist:
json.dump(<dict_obj>,<json_file>) # where <dict_obj> is a Python dictionary # and <json_file> is the JSON file
Ovenstående syntaks dumper ordboken <dict_obj>
inn i JSON-filen <json_file>
.
Vi har ordboken py_dict
fra forrige avsnitt. La oss nå lagre denne i en ny JSON-fil, som vi kaller new_file.json
.
Følgende kode viser hvordan du kan bruke dump()
-funksjonen:
with open('new_file.json','w') as file: json.dump(py_dict,file)
Merk: Åpning av en fil i skrivemodus («w») overskriver innholdet hvis filen allerede eksisterer. Hvis filen ikke eksisterer, opprettes filen.
Etter å ha kjørt koden ovenfor, vil du se at en ny JSON-fil har blitt opprettet i gjeldende mappe. Du kan nå undersøke innholdet i JSON-filen.
Opprette JSON-fil i Python
Hovedformålet med å skrive til filer er å lagre data. Hvis du ønsker å beholde formateringen, kan du også bruke parameterne indent
og sort_keys
.
Konklusjon
⏲ Det er tid for en rask oppsummering.
I denne artikkelen har du lært:
- Grunnleggende bruk av JSON.
- Hvordan bruke metodene
loads()
ogload()
for å lese henholdsvis JSON-strenger og JSON-filer. - Hvordan bruke metodene
dumps()
ogdump()
for å konvertere Python-ordbøker til henholdsvis JSON-strenger og JSON-filer.
Jeg håper du fant denne artikkelen nyttig. Lykke til med læringen!
Du kan også se på JSON-verktøy for å analysere, formatere og validere JSON-data.