O JSON -u
JSON (JavaScript Object Notation) format je datoteke i standard za pohranu podataka koji koristi parove ključ / vrijednost za pohranu i razmjenu podataka. To je najčešće korišteni format razmjene podataka, često viđen u RESTful API -ima, laganim bazama podataka, konfiguracijskim datotekama i drugom izvanmrežnom ili mrežnom softveru koji treba pohranjivati, dohvatiti i razmjenjivati podatke. Većina programskih jezika uključuje knjižnice za raščlanjivanje i pisanje JSON podataka prema zadanim postavkama, a JSON je format podataka agnostičkih programskih jezika. Vrijednosti pohranjene u JSON datoteci ili korisnom opterećenju obično sadrže nizove, brojeve i vrste podataka koje se mogu serijalizirati, poput popisa (polja).
Rječnici JSON -a i Pythona
JSON podaci u pythonu pretvaraju se u objekt rječnika metodom učitavanja. Često se vidi da neki ljudi izjednačavaju json podatke i python rječnik, jer je sintaksa za njihovo definiranje gotovo ista. Međutim, json podaci nisu ništa drugo nego tekstualni niz strukturiran u krutoj sintaksi, dok je rječnik python objekt strukture podataka pohranjen u memoriji. Ako želite pohraniti podatke rječnika u tekstualnu datoteku ili ih poslati u neki drugi program koji nije python, morat ćete ih prvo pretvoriti u tekstualni niz (bajtova). Ovaj dampirani / konvertirani tekstualni niz definiran je u standardnoj sintaksi JSON -a, a proces pretvaranja python rječnika u json kompatibilan niz naziva se serijalizacija.
Čitanje i ispisivanje JSON podataka u Pythonu
JSON podaci mogu se dohvatiti kao odgovor s poslužitelja, pročitati iz datoteke, izrezati iz parametara upita URL -a itd. Ovaj će se članak uglavnom usredotočiti na čitanje json podataka iz lokalno pohranjene datoteke. Pretpostavimo da datoteka test.json sadrži sljedeće podatke:
{'codename': 'Eoan Ermine', 'version': 'Ubuntu 19.10'}
Da biste pročitali datoteku test.json u pythonu, možete upotrijebiti donji kod:
uvozjson
s otvorena ('test.json') kaof:
podaci=json.opterećenje(f)
istovariti=json.deponije(podaci)
ispisati (podaci)
ispisati (tip(podaci))
ispisati (istovariti)
ispisati (tip(istovariti))
Prvi redak gornjeg koda uvozi json modul. U sljedećem retku s open se koristi za sigurno čitanje sadržaja datoteke. Unutar bloka with open metoda json.load koristi se za čitanje i spremanje sadržaja datoteke u varijablu podataka. Podaci učitani u prethodnom koraku pretvaraju se natrag u json niz pomoću metode json.dump. Pokretanje gornjeg koda prikazat će sljedeće rezultate:
{'kodno ime':'Eoan Ermine', 'verzija':'Ubuntu 19.10'}<razred 'dict'>
{'kodno ime':'Eoan Ermine', 'verzija':'Ubuntu 19.10'}
<razred 'str'>
Primijetite u gornjem izlazu da metoda json.load čita neobrađene json podatke u rječnik pythona, dok metode json.dumps pretvaraju rječnik u niz koji je kompatibilan sa strukturom JSON -a. Nakon što se JSON objekt pretvori u objekt rječnika python, možete koristiti ugrađene metode rječnika python za rukovanje podacima. Gornji primjer je prilično jednostavan i ne uključuje nizove u JSON podacima ili ugniježđene vrijednosti. Međutim, unutar pythona možete upravljati tim vrijednostima kao i svi drugi ugniježđeni rječnici i popisi.
Sortiranje i prilično ispis JSON podataka
Metoda json.dump podržava neke izborne parametre za razvrstavanje ključeva i lijep ispis rezultata radi bolje čitljivosti.
uvozjsons otvorena ('test.json') kaof:
podaci=json.opterećenje(f)
istovariti=json.deponije(podaci,sortiraj_ključeve=Pravi,uvlačenje=4)
ispisati (istovariti)
Gornji kôd pokazat će sljedeći izlaz:
{'codename': 'Eoan Ermine',
'verzija': 'Ubuntu 19.10'
}
Pretvorbe vrsta podataka
Donji popis ilustrira kako se JSON vrijednosti pretvaraju u python objekte i obrnuto.
JSON | Piton |
niz | str |
broj | int ili float |
točno netočno | Točno netočno |
null | Nijedan |
nizu | popis |
objekt | dikt |
Modul naredbenog retka Json.tool
Python uključuje lijepi uslužni program za naredbeni redak json.tool koji se može koristiti za provjeru valjanosti i lijepo ispisivanje JSON nizova i datoteka.
$ echo'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.alatIzvođenje gore navedene naredbe pokazat će vam se sljedeći izlaz:
{'codename': 'Eoan Ermine',
'verzija': 'Ubuntu 19.10'
}
Također možete koristiti json.tool s JSON datotekama. Zamijenite in_file i out_file u naredbi ispod željenim vrijednostima:
$ python3 -m json.alatu_datoteka van_datotekaOsim lijepog ispisa, sortiranja i provjere JSON podataka, json.tool ne radi ništa drugo. Dakle, ako želite manipulirati bilo kojim JSON podacima, morate napisati vlastiti prilagođeni kôd pomoću ugrađenog JSON modula.