A JSON az adatcsere népszerű formátuma. A Python beépített JSON-modullal érkezik a JSON-adatok elemzéséhez és kezeléséhez. Ez az oktatóanyag pedig mindent megtanít a JSON-nal való együttműködésről a Pythonban.
Az oktatóanyag végére a következőket tanulja meg:
- a JSON alapjai,
- hogyan lehet JSON-karakterláncokat elemezni és létrehozni Pythonban, és
- hogyan lehet JSON-fájlokból olvasni és írni a Pythonban.
Kezdjük!⏳
Tartalomjegyzék
Mi az a JSON?
A JSON a JavaScript Object Notation rövidítése, és ez egy szövegalapú formátum az adatcseréhez. Bár a JSON-t kezdetben JavaScript-objektumok ihlették, szinte minden programozási nyelv támogatja a JSON-nal való együttműködést.
Ha valaha is dolgozott API-kkal, vagy olvasta végig a konfigurációs fájlokat, valószínűleg belefutott volna a JSON-ba.
📑 API-k lekérdezésekor adatokat küld és fogad JSON-ban. A JSON-t széles körben használják szoftveralkalmazások kliens-szerver kommunikációjában is. Ezenkívül a JSON-t általános célú adattárolásra is használhatja.
A JSON formátuma nagyon hasonló a Python szótáréhoz. A szótárak a Python hatékony beépített adatstruktúrái, amelyek kulcs-érték párokban tárolják az adatokat.
Mielőtt továbbmennénk, érdemes megjegyezni néhány pontot:
- A Pythonban a JSON-objektumok szótárként vannak tárolva.
- A JSON-ban lévő tömb Python-listaként kerül tárolásra.
- A JSON-ban a logikai értékek igaznak és hamisnak vannak jelölve. A Pythonban ezek igaz és hamis logikai értékekre vannak konvertálva.
A JSON-ról Pythonra lefordított adattípusokkal kapcsolatos további részletekért olvassa el a dokumentumokat itt.
Mivel a json modul a Python szabványkönyvtár része, nem kell telepítenie. Importálhatja az aktuális könyvtárba, így:
import json
JSON karakterlánc betöltése Pythonban
A JSON karakterlánc Pythonban való betöltésének általános szintaxisa a következő:
<dict_obj> = json.loads(<json_str>)
Itt,
- A
az a Python-szótár, amelybe be szeretné tölteni a JSON-karakterláncot, - A
bármely érvényes JSON-karakterlánc.
Ez betölti a
Kódoljunk egy példát. Itt a json_str egy JSON karakterlánc.
json_str=""' { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ] } '''
Az alábbi kódrészlet pedig bemutatja, hogyan töltheti be a json_str JSON karakterláncot egy Python szótárba a loads() metódus segítségével. A beépített type() függvénnyel ellenőrizheti, hogy a py_dict egy Python-szótár.
py_dict = json.loads(json_str) type(py_dict) # Output: dict print(py_dict) # Output {'books': [{'title': 'The Wind in the Willows', 'author': 'Kenneth Grahame', 'year': '1908'}, {'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
Ahogy a fenti kód is mutatja, a JSON-karakterlánc összes mezője kulcs-érték pár a py_dict-ben.
JSON karakterláncok létrehozása Pythonban
Tegyük fel, hogy van egy Python szótárad. Tehát hogyan lehet belőle JSON-karakterláncot létrehozni?
Ezt a dumps() metódussal teheti meg ezzel a szintaxissal:
<json_str> = json.dumps(<dict_obj>)
Itt,
- A
az a Python-szótár, amelyből létre szeretné hozni a JSON-karakterláncot, - A
az eredményül kapott JSON-karakterlánc.
Tehát a dumps() metódus kiírja a
Meglévő Python szótárunkhoz py_dict. adjunk hozzá egy új kulcsfontosságú „filmeket”. Megteheti a következő kódrészletben látható módon:
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014", "lang":"en","watched":True}]
Most írjuk ki a módosított szótárt egy új JSON-karakterláncba, json_str2 a dumps() metódus használatával.
json_str2 = json.dumps(py_dict) print(json_str2) # Output {"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, {"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], "movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}
Amint a fenti példában látható, a kimeneti JSON-karakterlánc megfelelő formázás nélkül nehezen olvasható át. Az opcionális paraméter behúzás segítségével behúzást adhat hozzá.
Ezt megteheti úgy, hogy a behúzást egy egész számra, például 2-re állítja, az alábbiak szerint:
json_str2 = json.dumps(py_dict, indent = 2) print(json_str2) # Output { "books": [ { "title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908" }, { "title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927" } ], "movies": [ { "title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true } ] }
Figyelje meg, hogy a kimenet hogyan lett formázva behúzással, és könnyen követhető.
Megjegyzés: 💡 Ha azt szeretné, hogy a kulcsok ábécé sorrendbe legyenek rendezve, a sort_keys paramétert igazra állíthatja.
Amint az alábbi kódrészleten is látható, a kulcsok ábécé sorrendbe lettek rendezve.
json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True) print(json_str2) # Output { "books": [ { "author": "Kenneth Grahame", "title": "The Wind in the Willows", "year": "1908" }, { "author": "Virginia Woolf", "title": "To the Lighthouse", "year": "1927" } ], "movies": [ { "lang": "en", "title": "The Imitation Game", "watched": true, "year": "2014" } ]
A billentyűk pedig ábécé sorrendben jelennek meg: „szerző”, „cím” és „év”.
Eddig megtanulta, hogyan kell JSON-karakterláncokkal dolgozni Pythonban. A következő részben megtudhatja, hogyan kell dolgozni a JSON-fájlokkal.
JSON-fájl olvasása Pythonban
JSON-fájl Pythonban való olvasásához használja a következő szintaxist:
json.load(<json-file>) # where <json-file> is any valid JSON file.
Figyeljük meg, hogyan használjuk a load() metódust, és nem a loads() metódust. loads() egy JSON karakterláncot tölt be, míg a load() JSON fájlt.
Fontolja meg a környezetkezelők használatát, amikor Pythonban dolgozik fájlokkal. Megpróbálhatja a fájlok olvasását a következőképpen, környezetkezelő használata nélkül:
my_file = open('students.json','r') contents = my_file.read() print(contents) file.close()
Ha nem zárja be a fájlt, potenciálisan erőforráspazarlás következhet be.
Ha azonban környezetkezelőkkel dolgozik, a fájlok automatikusan bezáródnak, amint a fájlműveletek befejeződtek.
A kontextuskezelőt használhatja a fájlok olvasásához, az alábbiak szerint:
with open('students.json','r') as file: data = json.load(file) print(data) # Output {'students': [{'roll_num': 'cs27', 'name': 'Anna', 'course': 'CS'}, {'roll_num': 'ep30', 'name': 'Kate', 'course': 'PHY'}]}
Amikor egy fájlból olvas, adja meg a módot olvasási módként – ezt a fenti kódban „r” jelöli.
Megjegyzés: Az aktuális könyvtárban való egyszerű navigálás érdekében győződjön meg arról, hogy a JSON-fájl ugyanabban a mappában van, mint a main.py, ahogy az alábbi képen látható. Ha a JSON-fájl egy másik mappában található, feltétlenül adja meg a fájl elérési útját.
JSON-fájl olvasása Pythonban.
A következő részben megtudhatja, hogyan írhat JSON-fájlba.✍
Hogyan írjunk JSON-fájlba Pythonban
Meglévő JSON-fájlba íráshoz vagy új JSON-fájl létrehozásához használja a dump() metódust az alábbi módon:
json.dump(<dict_obj>,<json_file>) # where <dict_obj> is a Python dictionary # and <json_file> is the JSON file
Tehát a fenti szintaxis kiírja a
Az előző részben volt a py_dict szótárunk. Most írjuk be ezt egy új JSON-fájlba. És nevezzük el new_file.jsonnak.
A következő kódcella pedig megmutatja, hogyan használhatja a dump() függvényt:
with open('new_file.json','w') as file: json.dump(py_dict,file)
Megjegyzés: A fájl írási módban történő megnyitása (w) felülírja a tartalmat, ha a fájl létezik. Ha a fájl nem létezik, a fájl létrejön.
A fenti kódcella végrehajtása után látni fogja, hogy egy új JSON-fájl jött létre az aktuális munkakönyvtárban. És folytathatja és megvizsgálhatja a JSON-fájl tartalmát.
Hozzon létre JSON-fájlt a Pythonban
Fájlokba írásakor a legfontosabb cél az adattárolás. És ha meg szeretné őrizni a formázást, használhatja az indent és a sort_keys paramétereket is.
Következtetés
⏲ Itt az ideje egy gyors összefoglalónak.
Ebben az oktatóanyagban a következőket tanulta meg:
- a JSON használatának alapjai,
- hogyan kell használni a loads() és load() metódusokat a JSON karakterlánc és JSON fájlok olvasásához,
- hogyan használhatjuk a dumps() és dump() metódusokat a Python-szótárak JSON-karakterláncokba, illetve JSON-fájlokba való kiírásához.
Remélem hasznosnak találtad ezt az oktatóanyagot. Boldog tanulást!
A JSON-eszközöket is megtekintheti az elemzéshez, formázáshoz és ellenőrzéshez.