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.
importjsons 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_fileKromě 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.