Jak číst a zapisovat soubory Json v Pythonu

How Read Write Json Files Python



Tento článek vysvětlí, jak zacházet se soubory a daty JSON v programovacím jazyce Python. Python je dodáván s vestavěným modulem json, který usnadňuje a zjednodušuje zpracování dat JSON.

O společnosti JSON

JSON (JavaScript Object Notation) je standard formátu souborů a ukládání dat, který k ukládání a výměně dat používá páry klíč – hodnota. Jedná se o nejpoužívanější formát pro výměnu dat, často k vidění v RESTful API, odlehčených databázích, konfiguračních souborech a dalším offline nebo online softwaru, který potřebuje ukládat, načítat a vyměňovat data. Většina programovacích jazyků obsahuje ve výchozím nastavení knihovny pro analýzu a zápis dat JSON a JSON je agnostický datový formát programovacího jazyka. Hodnoty uložené v souboru JSON nebo datové části obvykle obsahují řetězce, čísla a serializovatelné datové typy, jako jsou seznamy (pole).







Slovníky JSON a Python

Data JSON v pythonu jsou převedena na objekt slovníku pomocí metody načítání. Často je vidět, že někteří lidé ztotožňují data json a slovník pythonu, protože syntaxe k definování obou je téměř stejná. Data json však nejsou nic jiného než textový řetězec strukturovaný v rigidní syntaxi, zatímco slovník pythonu je objekt datové struktury uložený v paměti. Pokud chcete data slovníku uložit do textového souboru nebo je odeslat do jiného programu, který není python, budete je muset nejprve převést na textový řetězec (bajty). Tento uložený / převedený textový řetězec je definován ve standardní syntaxi JSON a proces převodu slovníku pythonu na řetězec kompatibilní s json se nazývá serializace.



Čtení a ukládání dat JSON v Pythonu

Data JSON lze načíst jako odpověď ze serveru, načíst ze souboru, rozřezat z parametrů dotazu na adresu URL atd. Tento článek se zaměří hlavně na čtení dat json z místně uloženého souboru. Předpokládejme, že soubor test.json obsahuje následující data:



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

K přečtení souboru test.json v pythonu můžete použít níže uvedený kód:





importjson

s otevřeno ('test.json') tak jakoF:
data=json.zatížení(F)

skládka=json.skládky(data)

tisk (data)
tisk (typ(data))
tisk (skládka)
tisk (typ(skládka))

První řádek ve výše uvedeném kódu importuje modul json. V dalším řádku s otevřeným slouží k bezpečnému čtení obsahu souboru. V rámci with with open block se ke čtení a ukládání obsahu souboru v datové proměnné používá metoda json.load. Data načtená v předchozím kroku jsou převedena zpět na řetězec json pomocí metody json.dump. Spuštěním výše uvedeného kódu se zobrazí následující výstup:

{'krycí jméno':'Eoan Ermine', 'verze':'Ubuntu 19.10'}
<třída 'dict'>
{'krycí jméno':'Eoan Ermine', 'verze':'Ubuntu 19.10'}
<třída 'str'>

Všimněte si výše uvedeného výstupu, že metoda json.load čte nezpracovaná data json do slovníku pythonu, zatímco metody json.dumps převádí slovník na řetězec, který je kompatibilní se strukturou JSON. Jakmile byl objekt JSON převeden na objekt slovníku pythonu, můžete ke zpracování dat použít vestavěné metody slovníku python. Výše uvedený příklad je docela základní a nezahrnuje pole v datech JSON ani vnořených hodnotách. V pythonu však můžete s těmito hodnotami zacházet jako s jinými vnořenými slovníky a seznamy.



Třídění a pěkný tisk dat JSON

Metoda json.dump podporuje některé volitelné parametry pro třídění klíčů a pěkný tisk výstupu pro lepší čitelnost.

importjson

s otevřeno ('test.json') tak jakoF:
data=json.zatížení(F)

skládka=json.skládky(data,sort_keys=Skutečný,Odrážka=4)
tisk (skládka)

Výše uvedený kód zobrazí následující výstup:

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

Převody datových typů

Níže uvedený seznam ukazuje, jak se hodnoty JSON převádějí na objekty pythonu a naopak.

JSON Krajta
tětiva p
číslo int nebo float
pravda, nepravda Pravda, nepravda
nula Žádný
pole seznam
objekt diktovat

Modul příkazového řádku Json.tool

Python obsahuje pěkný nástroj příkazového řádku json.tool, který lze použít k ověření a pěknému tisku řetězců a souborů JSON.

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

Spuštění výše uvedeného příkazu vám ukáže následující výstup:

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

Můžete také použít json.tool se soubory JSON. Nahraďte in_file a out_file v níže uvedeném příkazu požadovanými hodnotami:

$ python3 -m json.nářadíin_file out_file

Kromě hezkého tisku, třídění a ověřování dat JSON, json.tool nedělá nic jiného. Pokud tedy chcete manipulovat s jakýmikoli daty JSON, musíte si pomocí vestavěného modulu JSON napsat vlastní vlastní kód.