Python JSON: Olvasás, írás, JSON elemzése (példákkal)

Ebben az oktatóanyagban megtanulsz elemezni, olvasni és írni JSON-t a Python-ban példák segítségével. Ezenkívül megtanulja átalakítani a JSON-ot diktálttá és szépen kinyomtatni.

JSON ( J Ava S cript O bject N otation) egy népszerű adatformátum használt képviselő strukturált adatok. JSON formátumban gyakran továbbítanak és fogadunk adatokat egy szerver és egy webalkalmazás között.

A Pythonban a JSON karakterláncként létezik. Például:

 p = '("name": "Bob", "languages": ("Python", "Java"))' 

Az is gyakori, hogy JSON objektumokat tárolnak egy fájlban.

Importálja a json modult

A JSON (string vagy JSON objektumot tartalmazó fájl) használatához használhatja a Python jsonmodulját. A használat előtt be kell importálnia a modult.

 import json

A JSON elemzése a Pythonban

A jsonmodul megkönnyíti a JSON-karakterláncok és a JSON-objektumot tartalmazó fájlok elemzését.

1. példa: Python JSON diktál

A JSON karakterláncot elemezheti a json.loads()módszerrel. A módszer szótárt ad vissza.

 import json person = '("name": "Bob", "languages": ("English", "Fench"))' person_dict = json.loads(person) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print( person_dict) # Output: ('English', 'French') print(person_dict('languages'))

Itt a személy egy JSON karakterlánc, a person_dict pedig egy szótár.

2. példa: A Python beolvassa a JSON fájlt

A json.load()metódus segítségével elolvashatja a JSON objektumot tartalmazó fájlt.

Tegyük fel, hogy van egy fájlja, person.jsonamely JSON objektumot tartalmaz.

  ("name": "Bob", "languages": ("English", "Fench") ) 

Így elemezheti ezt a fájlt:

  import json with open('path_to_file/person.json') as f: data = json.load(f) # Output: ('name': 'Bob', 'languages': ('English', 'Fench')) print(data) 

Itt a open()függvényt a json fájl beolvasására használtuk . Ezután a fájlt elemezzük egy olyan json.load()módszerrel, amely adatszótárt ad nekünk.

Ha nem tudja, hogyan kell fájlokat írni és olvasni a Pythonban, javasoljuk, hogy ellenőrizze a Python File I / O parancsot.

Python Konvertálás JSON karakterláncra

A json.dumps()metódus segítségével a szótárt JSON karakterláncokká alakíthatja .

3. példa: A dict konvertálása JSON-ra

  import json person_dict = ('name': 'Bob', 'age': 12, 'children': None ) person_json = json.dumps(person_dict) # Output: ("name": "Bob", "age": 12, "children": null) print(person_json) 

Itt van egy táblázat, amely bemutatja a Python-objektumokat és azok egyenértékű átalakítását JSON-vá.

Piton JSON egyenértékű
dict tárgy
list, tuple sor
str húr
int, float,int szám
True igaz
False hamis
None nulla

JSON írása fájlba

Ha JSON-t írunk egy fájlba a Pythonban, használhatjuk a json.dump()metódust.

4. példa: JSON írása fájlba

  import json person_dict = ("name": "Bob", "languages": ("English", "Fench"), "married": True, "age": 32 ) with open('person.txt', 'w') as json_file: json.dump(person_dict, json_file) 

In the above program, we have opened a file named person.txt in writing mode using 'w'. If the file doesn't already exist, it will be created. Then, json.dump() transforms person_dict to a JSON string which will be saved in the person.txt file.

When you run the program, the person.txt file will be created. The file has following text inside it.

 ("name": "Bob", "languages": ("English", "Fench"), "married": true, "age": 32)

Python pretty print JSON

To analyze and debug JSON data, we may need to print it in a more readable format. This can be done by passing additional parameters indent and sort_keys to json.dumps() and json.dump() method.

Example 5: Python pretty print JSON

  import json person_string = '("name": "Bob", "languages": "English", "numbers": (2, 1.6, null))' # Getting dictionary person_dict = json.loads(person_string) # Pretty Printing JSON string back print(json.dumps(person_dict, indent = 4, sort_keys=True)) 

When you run the program, the output will be:

 ( "languages": "English", "name": "Bob", "numbers": ( 2, 1.6, null ) ) 

A fenti programban 4szóközöket használtunk behúzáshoz. A kulcsok növekvő sorrendbe vannak rendezve.

Egyébként a behúzás alapértelmezett értéke None. És a sort_keys alapértelmezett értéke False.

Ajánlott olvasmányok:

  • Python JSON-ból CSV-be és fordítva
  • Python XML JSON-hoz és fordítva
  • Python simplejson

érdekes cikkek...