Ako čítať a písať súbory Json v Pythone

How Read Write Json Files Python



Tento článok vysvetlí, ako zaobchádzať so súbormi a údajmi JSON v programovacom jazyku Python. Python je dodávaný so vstavaným modulom json, ktorý uľahčuje a zjednodušuje manipuláciu s údajmi JSON.

O spoločnosti JSON

JSON (JavaScript Object Notation) je štandard formátu súborov a ukladania údajov, ktorý na ukladanie a výmenu údajov používa páry kľúč-hodnota. Je to najpoužívanejší formát na výmenu údajov, ktorý sa často používa v rozhraniach RESTful API, ľahkých databázach, konfiguračných súboroch a inom offline alebo online softvéri, ktorý potrebuje ukladať, získavať a vymieňať údaje. Väčšina programovacích jazykov obsahuje knižnice na štandardné analyzovanie a zápis údajov JSON a JSON je agnostický dátový formát v programovacom jazyku. Hodnoty uložené v súbore JSON alebo v užitočnom zaťažení zvyčajne obsahujú reťazce, čísla a serializovateľné dátové typy, ako sú zoznamy (polia).







Slovníky JSON a Python

Údaje JSON v pythone sa prevádzajú na objekt slovníka pomocou metódy načítania. Často sa ukazuje, že niektorí ľudia stotožňujú údaje json a pythonský slovník s tým, že syntax na definovanie oboch je takmer rovnaká. Údaje json však nie sú ničím iným ako textovým reťazcom štruktúrovaným v rigidnej syntaxi, zatiaľ čo slovník pythonu je objektom dátovej štruktúry uloženým v pamäti. Ak chcete uložiť slovníkové údaje do textového súboru alebo ich odoslať do iného programu, ktorý nie je python, budete ich musieť najskôr previesť na textový reťazec (bajty). Tento dumpingový / konvertovaný textový reťazec je definovaný v štandardnej syntaxi JSON a proces prevodu slovníka pythonu na reťazec kompatibilný s json sa nazýva serializácia.



Čítanie a ukladanie údajov JSON v Pythone

Údaje JSON je možné získať ako odpoveď zo servera, načítať zo súboru, rozdeliť na kúsky z parametrov dopytu adresy URL a podobne. Tento článok sa zameria hlavne na čítanie údajov json z lokálne uloženého súboru. Predpokladajme, že súbor test.json obsahuje nasledujúce údaje:



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

Na prečítanie súboru test.json v pythone môžete použiť nasledujúci kód:





importjson

s otvorené ('test.json') akof:
údaje=json.naložiť(f)

skládka=json.skládky(údaje)

vytlačiť (údaje)
vytlačiť (typ(údaje))
vytlačiť (skládka)
vytlačiť (typ(skládka))

Prvý riadok vo vyššie uvedenom kóde importuje modul json. V nasledujúcom riadku s otvoreným sa používa na bezpečné čítanie obsahu súboru. V rámci bloku with open sa na čítanie a ukladanie obsahu súborov do dátovej premennej používa metóda json.load. Údaje načítané v predchádzajúcom kroku sa pomocou metódy json.dump prevedú späť na reťazec json. Spustením vyššie uvedeného kódu sa zobrazí nasledujúci výstup:

{„kódové meno“:'Eoan Ermine', 'verzia':„Ubuntu 19.10“}
<trieda 'diktovať'>
{„kódové meno“:'Eoan Ermine', 'verzia':„Ubuntu 19.10“}
<trieda 'str'>

Všimnite si vo vyššie uvedenom výstupe, že metóda json.load číta nespracované údaje json do slovníka pythonu, zatiaľ čo metódy json.dumps prevádzajú slovník na reťazec, ktorý je kompatibilný so štruktúrou JSON. Keď sa objekt JSON skonvertuje na objekt slovníka pythonu, s údajmi môžete zaobchádzať pomocou vstavaných metód slovníka python. Vyššie uvedený príklad je celkom základný a nezahŕňa polia v údajoch JSON ani vnorených hodnotách. V pythone však môžete s týmito hodnotami zaobchádzať ako s akýmikoľvek inými vnorenými slovníkmi a zoznammi.



Zoradenie a pekná tlač údajov JSON

Metóda json.dump podporuje niektoré voliteľné parametre na triedenie kľúčov a peknú tlač výstupu pre lepšiu čitateľnosť.

importjson

s otvorené ('test.json') akof:
údaje=json.naložiť(f)

skládka=json.skládky(údaje,sort_keys=Pravda,zarážka=4)
vytlačiť (skládka)

Vyššie uvedený kód zobrazí nasledujúci výstup:

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

Konverzie dátových typov

Nasledujúci zoznam ilustruje, ako sa hodnoty JSON prevádzajú na objekty python a naopak.

JSON Python
reťazec p
číslo int alebo float
pravda lož Pravda lož
nulový Žiadny
pole zoznam
predmet dikt

Modul príkazového riadka Json.tool

Python obsahuje pekný nástroj príkazového riadka json.tool, ktorý je možné použiť na validáciu a peknú tlač reťazcov a súborov JSON.

$ echo'{' codename ':' Eoan Ermine ',' version ':' Ubuntu 19.10 '}'| python3 -m json.nástroj

Spustenie vyššie uvedeného príkazu vám ukáže nasledujúci výstup:

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

Json.tool môžete použiť aj so súbormi JSON. Nahraďte in_file a out_file v nižšie uvedenom príkaze požadovanými hodnotami:

$ python3 -m json.nástrojin_file out_file

Okrem peknej tlače, triedenia a overovania údajov JSON, json.tool nerobí nič iné. Ak teda chcete manipulovať s akýmikoľvek údajmi JSON, musíte si napísať vlastný kód pomocou vstavaného modulu JSON.