Kuidas lugeda ja kirjutada Json -faile Pythonis

How Read Write Json Files Python



See artikkel selgitab, kuidas käsitseda JSON -faile ja andmeid Pythoni programmeerimiskeeles. Pythonil on sisseehitatud json-moodul, mis muudab JSON-andmete käsitlemise lihtsaks ja arusaadavaks.

JSONi kohta

JSON (JavaScript Object Notation) on failivorming ja andmesalvestusstandard, mis kasutab andmete salvestamiseks ja vahetamiseks võtme-väärtuse paare. See on kõige laialdasemalt kasutatav andmevahetusvorming, mida sageli nähakse RESTful API -des, kergetes andmebaasides, konfiguratsioonifailides ja muus võrguühenduseta või võrgutarkvaras, mis vajab andmete salvestamist, toomist ja vahetamist. Enamik programmeerimiskeeli sisaldab vaikimisi raamatukogusid JSON -i andmete sõelumiseks ja kirjutamiseks ning JSON on programmeerimiskeele agnostiline andmevorming. JSON -faili või kasulikku koormusesse salvestatud väärtused sisaldavad tavaliselt stringe, numbreid ja järjestatavaid andmetüüpe, näiteks loendeid (massiive).







JSON ja Pythoni sõnastikud

Pythonis olevad JSON -andmed teisendatakse laadimismeetodi abil sõnastikuobjektiks. Sageli on näha, et mõned inimesed võrdsustavad jsoni andmed ja püütoni sõnastiku, kuna nende mõlema määratlemise süntaks on peaaegu sama. Json -andmed pole aga muud kui teksti string, mis on struktureeritud jäigale süntaksile, samas kui python -sõnaraamat on mällu salvestatud andmestruktuuri objekt. Kui soovite salvestada sõnastiku andmeid tekstifaili või saata need teisele mitte-pythoni programmile, peate need esmalt teisendama tekstistringiks (baitideks). See dumpitud / teisendatud tekstistring on määratletud JSON -i standardsüntaksis ja protsessi, mille abil püütonisõnastik json -ühilduvaks stringiks teisendatakse, nimetatakse serialiseerimiseks.



JSON -andmete lugemine ja dumping Pythonis

JSON -andmeid saab serverist vastusena hankida, failist lugeda, URL -i päringu parameetritest lõigata ja nii edasi. See artikkel keskendub peamiselt json -andmete lugemisele kohalikult salvestatud failist. Oletame, et test.json -fail sisaldab järgmisi andmeid:



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

Faili test.json lugemiseks pythonis saate kasutada järgmist koodi:





importjson

koos lahti ('test.json') naguf:
andmed=json.koormus(f)

prügimäele=json.prügimäed(andmed)

printida (andmed)
printida (tüüpi(andmed))
printida (prügimäele)
printida (tüüpi(prügimäele))

Ülaltoodud koodi esimene rida impordib json -mooduli. Järgmisel real kasutatakse faili sisu turvaliseks lugemiseks funktsiooni open. Avatud ploki sees kasutatakse meetodit json.load failisisu lugemiseks ja salvestamiseks andmemuutjas. Eelmises etapis laaditud andmed teisendatakse json stringiks, kasutades meetodit json.dump. Ülaltoodud koodi käivitamine näitab järgmist väljundit:

{'koodnimi':'Eoan Ermine', 'versioon':'Ubuntu 19.10'}
<klassi 'dikteerima'>
{'koodnimi':'Eoan Ermine', 'versioon':'Ubuntu 19.10'}
<klassi 'str'>

Pange tähele ülaltoodud väljundis, et meetod json.load loeb jsoni töötlemata andmed pythoni sõnastikku, samas kui json.dumps meetodid teisendavad sõnastiku stringiks, mis ühildub JSON -i struktuuriga. Kui JSON-objekt on teisendatud pythoni sõnastikuobjektiks, saate andmete töötlemiseks kasutada sisseehitatud pythoni sõnastiku meetodeid. Ülaltoodud näide on üsna lihtne ega sisalda massiive JSON -i andmetes ega pesastatud väärtustes. Kuid pythonis saate nende väärtustega hakkama nagu kõik teised pesastatud sõnastikud ja loendid.



JSON -andmete sortimine ja ilus printimine

Meetod json.dump toetab mõningaid valikulisi parameetreid klahvide sortimiseks ja väljundi ilusaks printimiseks parema loetavuse tagamiseks.

importjson

koos lahti ('test.json') naguf:
andmed=json.koormus(f)

prügimäele=json.prügimäed(andmed,sort_keys=Tõsi,taane=4)
printida (prügimäele)

Ülaltoodud kood näitab järgmist väljundit:

{
'koodnimi': 'Eoan Ermine',
'versioon': 'Ubuntu 19.10'
}

Andmetüübi konversioonid

Allolev loend illustreerib JSON -i väärtuste teisendamist pythoni objektideks ja vastupidi.

JSON Python
string lk
number int või float
õige Vale Õige Vale
null Puudub
massiiv nimekirja
objekti dikteerima

Json.tool käsurea moodul

Python sisaldab kena käsurea utiliiti json.tool, mida saab kasutada JSON -stringide ja -failide valideerimiseks ja ilusaks printimiseks.

$ kaja'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.tööriist

Ülaltoodud käsu käivitamine näitab teile järgmist väljundit:

{
'koodnimi': 'Eoan Ermine',
'versioon': 'Ubuntu 19.10'
}

JSON -failidega saate kasutada ka json.tool. Asendage allolevas käsus in_file ja out_file soovitud väärtustega:

$ python3 -m json.tööriistin_file out_file

Lisaks ilusale printimisele, sorteerimisele ja JSON -andmete valideerimisele ei tee json.tool midagi muud. Seega, kui soovite JSON-i andmetega manipuleerida, peate sisseehitatud JSON-mooduli abil kirjutama oma kohandatud koodi.