Python

Kuidas Jsoni faile lugeda ja kirjutada Pythonis

Kuidas Jsoni faile lugeda ja kirjutada Pythonis
Selles artiklis selgitatakse, kuidas JSON-faile ja andmeid Pythoni programmeerimiskeeles käsitseda. Pythonil on sisseehitatud „jsoni“ moodul, mis muudab JSON-i andmete käsitlemise lihtsaks ja arusaadavaks.

JSONi kohta

JSON (JavaScripti objektide märgistus) on failivorming ja andmete salvestamise standard, mis kasutab andmete salvestamiseks ja vahetamiseks võtme-väärtuste paare. See on kõige laialdasemalt kasutatav andmevahetusvorming, mida näeb sageli RESTful API-des, kergekaalulistes andmebaasides, konfiguratsioonifailides ja muus võrguühenduseta või võrgutarkvaras, mis peab andmeid salvestama, tooma ja vahetama. Enamik programmeerimiskeeli sisaldab vaikimisi JSON-andmete sõelumiseks ja kirjutamiseks teeke ning JSON on programmeerimiskeele agnostiline andmevorming. JSON-faili või kasuliku koormuse salvestatud väärtused sisaldavad tavaliselt stringe, numbreid ja jadatavat tüüpi andmetüüpe, näiteks loendeid (massiive).

JSONi ja Pythoni sõnastikud

JSON-andmed pythonis teisendatakse sõnastikuobjektiks, kasutades meetodit "laadida". Sageli nähakse, et mõned inimesed võrdsustavad jsoni andmed ja pythoni sõnaraamatu, kuna mõlema määratlemiseks on süntaks peaaegu sama. Jsoni andmed pole aga muud kui jäikus süntaksis struktureeritud tekstistring, samas kui pythoni sõnastik on mällu salvestatud andmestruktuuri objekt. Kui soovite sõnastikuandmeid salvestada tekstifaili või saata need muule kui Pythoni programmile, peate need kõigepealt teisendama tekstistringiks (baitideks). See tühjendatud / teisendatud tekstistring on määratletud JSON-i standardses süntaksis ja Pythoni sõnaraamatu JSON-iga ühilduvaks stringiks teisendamise protsessi nimetatakse seerialiseerimiseks.

JSON-andmete lugemine ja tühjendamine Pythonis

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

"koodnimi": "Eoan Ermine", "versioon": "Ubuntu 19.10 "

Testi lugemiseks.jsoni fail pythonis, saate kasutada järgmist koodi:

import json
avatud ("test.json ") kui f:
andmed = json.koormus (f)
dump = json.prügimäed (andmed)
print (andmed)
print (tüüp (andmed))
print (prügikast)
print (tüüp (prügikast))

Ülaltoodud koodi esimene rida impordib jsoni mooduli. Järgmisel real kasutatakse faili sisu ohutuks lugemiseks sõna "avatud". Plokis „avatud“ on „json.laadimismeetodit kasutatakse faili sisu muutuja "data" lugemiseks ja salvestamiseks. Eelmises etapis laaditud andmed teisendatakse tagasi jsoni stringiks, kasutades valikut „json.dump ”meetod. Ülaltoodud koodi käivitamisel kuvatakse järgmine väljund:

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

"koodnimi": "Eoan Ermine", "versioon": "Ubuntu 19.10 "

Pange ülaltoodud väljundis tähele, et „json.laadige meetod loeb jsoni toored andmed pythoni sõnastikku, samal ajal kui „json.dumps ”meetodid teisendavad sõnastiku stringiks, mis ühildub JSON-i struktuuriga. Kui JSON-objekt on teisendatud Pythoni sõnaraamatu objektiks, saate andmete töötlemiseks kasutada sisseehitatud Pythoni sõnaraamatu meetodeid. Ülaltoodud näide on üsna lihtne ja ei sisalda massiive JSON-i andmetes ega sisestatud väärtustes. Kuid pythonis saate neid väärtusi käsitseda nagu kõiki teisi pesastatud sõnastikke ja loendeid.

JSON-andmete sortimine ja ilus printimine

„Json.dump ”meetod toetab mõningaid valikulisi parameetreid võtmete sorteerimiseks ja väljundi kenaks printimiseks, et see oleks paremini loetav.

import json
avatud ("test.json ") kui f:
andmed = json.koormus (f)
dump = json.prügimäed (andmed, sort_keys = True, taane = 4)
print (prügikast)

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


"koodnimi": "Eoan Ermine",
"versioon": "Ubuntu 19.10 "

Andmetüübi konversioonid

Allpool olev loetelu illustreerib, kuidas JSON-i väärtused teisendatakse pythoni objektideks ja vastupidi.

JSON Python
string str
number int või ujuk
õige Vale Õige Vale
null Puudub
massiiv nimekirja
objekt dikteerima

Json.tööriista käsurea moodul

Python sisaldab kena käsurea utiliiti “json.tööriist ”, mida saab kasutada JSON-i stringide ja failide valideerimiseks ja ilusaks printimiseks.

$ echo '"koodnimi": "Eoan Ermine", "versioon": "Ubuntu 19.10 " '| python3 -m json.tööriist

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


"koodnimi": "Eoan Ermine",
"versioon": "Ubuntu 19.10 "

Võite kasutada ka jsoni.tööriist JSON-failidega. Asendage allolevas käsus „in_file” ja „out_file” soovitud väärtustega:

$ python3 -m json.tööriist failis_fail

Peale ilusa printimise, JSON-andmete sortimise ja valideerimise, json.tööriist ei tee midagi muud. Nii et kui soovite JSON-andmetega manipuleerida, peate sisseehitatud JSON-mooduli abil kirjutama oma kohandatud koodi.

HD Remastered Games Linuxile, millel pole kunagi varem Linuxi väljalaset olnud
Paljud mängude arendajad ja kirjastajad pakuvad frantsiisi eluea pikendamiseks välja vanade mängude HD-remasteri. Palun fännid, kes soovivad ühilduvus...
Kuidas kasutada AutoKeyt Linuxi mängude automatiseerimiseks
AutoKey on Linuxi ja X11 töölaua automatiseerimise utiliit, mis on programmeeritud Python 3, GTK ja Qt. Selle skriptimise ja MACRO funktsionaalsuse ab...
Kuidas näidata FPS-loendurit Linuxi mängudes
Linuxi mängimine sai suure tõuke, kui Valve teatas Steam-kliendi ja nende mängude Linuxi toest 2012. aastal. Sellest ajast peale on paljud AAA- ja ind...