JSON este un format foarte utilizat pentru transferul de informații. Python include un modul JSON integrat care permite analiza și manipularea datelor în format JSON. Acest tutorial vă va ghida în explorarea interacțiunii cu JSON folosind Python.
La finalizarea acestui tutorial, veți fi capabili să:
- înțelegeți elementele de bază ale JSON;
- analizați și generați șiruri JSON în Python;
- citiți și scrieți date în fișiere JSON folosind Python.
Să începem! 🚀
Ce reprezintă JSON?
JSON, acronim pentru JavaScript Object Notation, este un format text utilizat pentru schimbul de date. Deși la origine JSON a fost inspirat de obiectele JavaScript, majoritatea limbajelor de programare oferă suport pentru lucrul cu date în acest format.
Probabil ați întâlnit JSON dacă ați interacționat cu API-uri sau ați utilizat fișiere de configurare.
📑 Datele sunt trimise și primite în format JSON atunci când se solicită informații de la API-uri. JSON este, de asemenea, utilizat frecvent în comunicarea dintre client și server în cadrul aplicațiilor software. În plus, JSON poate fi folosit și pentru stocarea generală de date.
Structura JSON este foarte similară cu cea a unui dicționar Python. Dicționarele sunt structuri de date puternice, integrate în Python, care organizează informațiile sub formă de perechi cheie-valoare.
Înainte de a continua, este important să reținem următoarele aspecte:
- Un obiect JSON este reprezentat în Python ca un dicționar.
- Un array (matrice) în JSON este stocat ca o listă în Python.
- Valorile booleene din JSON, notate ca true și false, sunt convertite în valorile booleene True și False în Python.
Pentru detalii suplimentare despre modul în care tipurile de date din JSON sunt transpuse în Python, consultați documentația oficială aici.
Modulul json face parte din biblioteca standard Python, deci nu este necesară instalarea sa separată. Acesta poate fi importat în scriptul dvs. folosind următoarea linie de cod:
import json
Cum se încarcă un șir JSON în Python?
Sintaxa generală pentru importarea unui șir JSON în Python este:
<dict_obj> = json.loads(<json_str>)
Unde:
<dict_obj>reprezintă dicționarul Python în care doriți să încărcați datele din șirul JSON,<json_str>este orice șir JSON valid.
Astfel, <json_str> este convertit într-un dicționar Python și stocat în <dict_obj>.
Să vedem un exemplu practic. Mai jos, json_str este un șir JSON:
json_str=""'
{
"books": [
{
"title": "The Wind in the Willows",
"author": "Kenneth Grahame",
"year": "1908"
},
{
"title": "To the Lighthouse",
"author": "Virginia Woolf",
"year": "1927"
}
]
}
'''
Fragmentul de cod de mai jos demonstrează cum se poate încărca json_str într-un dicționar Python folosind funcția loads(). Putem folosi funcția type() pentru a verifica dacă py_dict este într-adevăr un dicționar Python:
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'}]}
După cum se observă, toate câmpurile din șirul JSON sunt acum perechi cheie-valoare în py_dict.
Cum se creează șiruri JSON în Python?
Să presupunem că aveți un dicționar Python și doriți să generați un șir JSON din acesta. Cum puteți realiza acest lucru?
Puteți utiliza metoda dumps() cu următoarea sintaxă:
<json_str> = json.dumps(<dict_obj>)
Unde:
<dict_obj>este dicționarul Python din care doriți să creați șirul JSON,<json_str>este șirul JSON rezultat.
Astfel, metoda dumps() convertește <dict_obj> într-un șir JSON <json_str>.
Să adăugăm o nouă cheie „filme” la dicționarul Python existent py_dict. Acest lucru poate fi realizat după cum urmează:
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
Acum, vom transforma dicționarul modificat într-un nou șir JSON, json_str2, folosind metoda dumps():
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}]}
După cum puteți observa, șirul JSON rezultat este dificil de citit fără o formatare adecvată. Puteți folosi parametrul opțional indent pentru a adăuga o indentare:
Pentru a face acest lucru, setați parametrul indent la un număr întreg, cum ar fi 2:
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
}
]
}
Observați modul în care ieșirea a fost formatată cu indentare, fiind mult mai ușor de urmărit.
Notă: 💡 Dacă doriți ca cheile să fie sortate alfabetic, puteți seta parametrul sort_keys la True.
După cum se vede în exemplul de mai jos, cheile au fost acum sortate alfabetic:
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"
}
]
}
Acum, cheile apar în ordine alfabetică: „author”, „title” și „year”.
Până acum ați învățat cum să lucrați cu șiruri JSON în Python. În secțiunea următoare, vom vedea cum se lucrează cu fișiere JSON.
Cum se citește un fișier JSON în Python?
Pentru a citi un fișier JSON în Python, folosiți următoarea sintaxă:
json.load(<json-file>) # where <json-file> is any valid JSON file.
Rețineți că se folosește metoda load(), nu loads(). loads() este utilizată pentru a încărca un șir JSON, în timp ce load() este utilizată pentru a încărca un fișier JSON.
Este recomandat să folosiți managerii de context atunci când lucrați cu fișiere în Python. Puteți încerca să citiți fișierele și fără a folosi managerul de context, astfel:
my_file = open('students.json','r')
contents = my_file.read()
print(contents)
file.close()
Dacă nu închideți fișierul, pot apărea risipe de resurse.
Totuși, când folosiți manageri de context, fișierele sunt închise automat după ce operațiile cu fișiere sunt terminate.
Iată cum puteți utiliza un manager de context pentru a citi un fișier:
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'}]}
Atunci când citiți dintr-un fișier, specificați modul de deschidere ca „citire”, indicat prin „r” în codul de mai sus.
Notă: Pentru a naviga ușor prin directorul curent, asigurați-vă că fișierul JSON se află în același folder cu scriptul dvs. principal (de exemplu, main.py), după cum se vede în imaginea de mai jos. Dacă fișierul JSON este stocat într-un alt folder, asigurați-vă că specificați calea completă către fișier.
Acesta este modul în care se citește un fișier JSON în Python.
În secțiunea următoare vom învăța cum să scriem într-un fișier JSON. ✍
Cum se scrie într-un fișier JSON în Python?
Pentru a scrie într-un fișier JSON existent sau pentru a crea un nou fișier JSON, utilizați metoda dump() după cum urmează:
json.dump(<dict_obj>,<json_file>) # where <dict_obj> is a Python dictionary # and <json_file> is the JSON file
Această sintaxă convertește dicționarul <dict_obj> și îl scrie în fișierul JSON <json_file>.
În secțiunea anterioară, am folosit dicționarul py_dict. Să îl scriem acum într-un nou fișier JSON numit new_file.json.
Următorul fragment de cod demonstrează cum se utilizează funcția dump():
with open('new_file.json','w') as file:
json.dump(py_dict,file)
Notă: Deschiderea unui fișier în modul de scriere (w) suprascrie conținutul său dacă fișierul există. În cazul în care fișierul nu există, acesta este creat automat.
După executarea fragmentului de cod de mai sus, un nou fișier JSON va fi creat în directorul de lucru curent. Puteți examina conținutul acestuia.
Acesta este modul în care se creează un fișier JSON în Python.
Când scrieți în fișiere, obiectivul principal este stocarea datelor. Dacă doriți să mențineți formatarea, puteți folosi parametrii indent și sort_keys.
Concluzie
⏲️ Să recapitulăm rapid.
În acest tutorial ați învățat:
- elementele de bază ale utilizării JSON;
- cum să folosiți metodele
loads()șiload()pentru a citi șiruri și respectiv fișiere JSON; - cum să folosiți metodele
dump()șidumps()pentru a scrie dicționare Python în fișiere și respectiv șiruri JSON.
Sper că acest tutorial a fost util. Spor la învățat!
De asemenea, puteți consulta diverse Instrumente JSON pentru a analiza, formata și valida datele în acest format.