A JSON elemzése Pythonban

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!⏳

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 fájlt a Python szótárba .

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 elemet a JSON karakterláncba.

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 szótárt a JSON-fájlba.

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.

  A Raspberry Pi használata proxyszerverként (Privoxyval)