Branje, pisanje in razčlenjevanje JSON z uporabo Pythona
JSON je lahek podatkovni format za izmenjavo podatkov, ki ga lahko ljudje preprosto berejo in pišejo, stroji pa ga zlahka razčlenijo in ustvarijo. Je popoln besedilni format, neodvisen od jezika. Za delo s podatki JSON ima Python vgrajen paket, imenovan JSON.
Primer niza JSON
s = '{'id':01, 'name': 'Emily', 'language': ['C++', 'Python']}' Sintaksa JSON velja za podmnožico sintakse JavaScript vključno z naslednjim:
- Pari ime/vrednost: Predstavlja podatke, imenu sledi dvopičje ( : ), pari ime/vrednost pa so ločeni z vejico ( , ).
- Zavit oklepaj: Drži predmete.
- Oglati oklepaji: Zadrži nize z vrednostmi, ločenimi z vejico ( , ).
Ključi/Ime morajo biti nizi z dvojnimi narekovaji, vrednosti pa morajo biti vrste podatkov med naslednjim:
Primer datoteke JSON:
{ 'employee': [ { 'id': '01', 'name': 'Amit', 'department': 'Sales' }, { 'id': '04', 'name': 'sunil', 'department': 'HR' } ] } Python razčleni niz JSON
V spodnji kodi bomo JSON pretvorili v objekt Python. Za razčlenitev niza JSON v Pythonu najprej uvozimo modul JSON. V spremenljivki imamo shranjen niz JSON 'zaposleni' in ta niz JSON pretvorimo v objekt Python z uporabo json.loads() metoda modula JSON v Pythonu. Nato s ključem 'ime' izpišemo ime zaposlenega. .
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'> ])> |
Izhod
{'id': '09', 'name': 'Nitin', 'department': 'Finance'} Nitin Python je prebral datoteko JSON
Recimo, da imamo datoteko JSON, ki je videti takole.
Tukaj smo uporabili funkcijo open() za branje datoteke JSON. Nato je datoteka razčlenjena z metodo json.load(), ki nam da slovar z imenom 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()> |
Izhod:
Pretvorite Python Dict v JSON
V spodnji kodi pretvarjamo a Slovar Python v objekt JSON z uporabo json.dumps() metoda modula JSON v Pythonu. Najprej uvozimo modul JSON in nato naredimo majhen slovar z nekaj pari ključ-vrednost in ga nato posredujemo metodi json.dumps() z 'indent=4', da pretvorimo ta slovar Python v objekt JSON. Ker smo vrednost zamika dali 4, so pred vsakim podatkom štirje presledki, kot je razvidno iz izhoda.
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)> |
Izhod
{ 'id': '04', 'name': 'sunil', 'department': 'HR' } Naslednje vrste predmetov Python je mogoče pretvoriti v nize JSON:
Objekti Python in njihova enakovredna pretvorba v JSON:
| Python | Ekvivalent JSON |
|---|---|
| dikt | predmet |
| seznam, tuple | niz |
| str | vrvica |
| int, float | število |
| Prav | prav |
| False | lažno |
| Noben | nič |
Pisanje JSON v datoteko v Pythonu
JSON lahko zapišemo v datoteko s funkcijo json.dump() modula JSON in obdelavo datotek v Pythonu. V spodnjem programu smo odprli datoteko z imenom sample.json v načinu pisanja z uporabo 'V' . Datoteka bo ustvarjena, če ne obstaja. Json.dump() bo spremenil slovar Python v niz JSON in bo shranjen v datoteki 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)> |
Izhod:
Python Pretty Print JSON
Ko pretvorimo niz v JSON, so podatki v manj berljivi obliki. Da bi bilo bolj berljivo, lahko uporabimo lepo tiskanje s posredovanjem dodatnih argumentov v funkciji json.dumps(), kot je npr. zamik in razvrsti_ključe kot je uporabljeno v spodnji kodi.
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> ))> |
Izhod
{ 'department': 'Finance', 'id': '09', 'name': 'Nitin' }