Læs, skriv og parse JSON ved hjælp af Python
JSON er et letvægtsdataformat til dataudveksling, der nemt kan læses og skrives af mennesker og nemt kan parses og genereres af maskiner. Det er et komplet sproguafhængigt tekstformat. For at arbejde med JSON-data har Python en indbygget pakke kaldet JSON.
Eksempel på JSON-streng
s = '{'id':01, 'name': 'Emily', 'language': ['C++', 'Python']}' Syntaksen af JSON betragtes som en delmængde af syntaksen af JavaScript herunder følgende:
- Navn/værdi par: Repræsenterer data, navnet er efterfulgt af et kolon( : ), og Navn/Værdi-parrene er adskilt af et komma( , ).
- Krøllede seler: Holder genstande.
- Firkantede parenteser: Hold arrays med værdier adskilt af et komma ( , ).
Nøgler/navn skal være strenge med dobbelte anførselstegn, og værdier skal være datatyper blandt følgende:
Eksempel på JSON-fil:
{ 'employee': [ { 'id': '01', 'name': 'Amit', 'department': 'Sales' }, { 'id': '04', 'name': 'sunil', 'department': 'HR' } ] } Python Parse JSON-streng
I nedenstående kode skal vi konvertere JSON til et Python-objekt. For at parse JSON-strengen Python importerer vi først JSON-modulet. Vi har en JSON-streng gemt i en variabel 'medarbejder' og vi konverterer denne JSON-streng til et Python-objekt ved hjælp af json.loads() metode til JSON-modul i Python. Derefter udskriver vi navnet på en medarbejder ved hjælp af nøglen 'navn' .
Python3
# Python program to convert JSON to Python> import> json> # JSON string> employee> => '{'id':'09', 'name': 'Nitin', 'department':'Finance'}'> # Convert string to Python dict> employee_dict> => json.loads(employee)> print> (employee_dict)> print> (employee_dict[> 'name'> ])> |
Produktion
{'id': '09', 'name': 'Nitin', 'department': 'Finance'} Nitin Python læste JSON-fil
Lad os antage, at vi har en JSON-fil, der ser sådan ud.
Her har vi brugt funktionen open() til at læse JSON-filen. Derefter parses filen ved hjælp af metoden json.load(), som giver os en ordbog med navnet data.
Python3
import> json> # Opening JSON file> f> => open> (> 'data.json'> ,)> # returns JSON object as> # a dictionary> data> => json.load(f)> # Iterating through the json> # list> for> i> in> data[> 'emp_details'> ]:> > print> (i)> # Closing file> f.close()> |
Produktion:
Konverter Python Dict til JSON
I nedenstående kode konverterer vi en Python ordbog til et JSON-objekt ved hjælp af json.dumps() metode til JSON-modul i Python. Vi importerer først JSON-modulet og laver derefter en lille ordbog med nogle nøgleværdi-par og sendte den derefter ind i metoden json.dumps() med 'indent=4' for at konvertere denne Python-ordbog til et JSON-objekt. Da vi har givet værdien af indrykning til 4, er der fire mellemrum før hver data, som det ses i outputtet.
Python3
# Python program to convert> # Python to JSON> import> json> > # Data to be written> dictionary> => {> > 'id'> :> '04'> ,> > 'name'> :> 'sunil'> ,> > 'department'> :> 'HR'> }> > # Serializing json> json_object> => json.dumps(dictionary, indent> => 4> )> print> (json_object)> |
Produktion
{ 'id': '04', 'name': 'sunil', 'department': 'HR' } Følgende typer Python-objekter kan konverteres til JSON-strenge:
Python-objekter og deres tilsvarende konvertering til JSON:
| Python | JSON-ækvivalent |
|---|---|
| dikt | objekt |
| liste, tupel | array |
| str | snor |
| int, flyde | nummer |
| Rigtigt | rigtigt |
| Falsk | falsk |
| Ingen | nul |
Skriver JSON til en fil i Python
Vi kan skrive JSON til fil ved hjælp af json.dump()-funktionen i JSON-modulet og filhåndtering i Python. I nedenstående program har vi åbnet en fil med navnet sample.json i skrivetilstand vha 'I' . Filen oprettes, hvis den ikke findes. Json.dump() vil transformere Python-ordbogen til en JSON-streng, og den vil blive gemt i filen sample.json.
Python3
# Python program to write JSON> # to a file> import> json> > # Data to be written> dictionary> => {> > 'name'> :> 'sathiyajith'> ,> > 'rollno'> :> 56> ,> > 'cgpa'> :> 8.6> ,> > 'phonenumber'> :> '9976770500'> }> > with> open> (> 'sample.json'> ,> 'w'> ) as outfile:> > json.dump(dictionary, outfile)> |
Produktion:
Python Pretty Print JSON
Når vi konverterer en streng til JSON, er dataene i et mindre læsbart format. For at gøre det mere læsbart kan vi bruge smuk udskrivning ved at sende yderligere argumenter i funktionen json.dumps() som f.eks. indrykning og sort_nøgler som brugt i nedenstående kode.
Python3
# Python program to convert JSON to Python> import> json> # JSON string> employee> => '{'id':'09', 'name': 'Nitin', 'department':'Finance'}'> # Convert string to Python dict> employee_dict> => json.loads(employee)> # Pretty Printing JSON string back> print> (json.dumps(employee_dict, indent> => 4> , sort_keys> => True> ))> |
Produktion
{ 'department': 'Finance', 'id': '09', 'name': 'Nitin' }