Cum se analizează JSON în Python

JSON este un format popular pentru schimbul de date. Python este livrat cu un modul JSON încorporat pentru a analiza și a lucra cu datele JSON. Și acest tutorial vă va învăța totul despre lucrul cu JSON în Python.

Până la sfârșitul acestui tutorial, veți învăța:

  • elementele de bază ale JSON,
  • cum să analizați și să creați șiruri JSON în Python și
  • cum să citiți și să scrieți în fișiere JSON în Python.

Să începem!⏳

Ce este JSON?

JSON înseamnă JavaScript Object Notation și este un format bazat pe text pentru schimbul de date. Deși JSON este inițial inspirat de obiectele JavaScript, aproape toate limbajele de programare acceptă lucrul cu JSON.

Dacă ați lucrat vreodată cu API-uri sau ați citit fișierele de configurare, probabil că ați fi întâlnit JSON.

📑 Trimiteți și primiți date în JSON atunci când interogați API-urile. Și JSON este, de asemenea, utilizat pe scară largă în comunicarea client-server în aplicațiile software. În plus, puteți utiliza JSON și pentru stocarea de date de uz general.

Formatul JSON este foarte asemănător cu cel al unui dicționar Python. Dicționarele sunt structuri puternice de date încorporate în Python care stochează date în perechi cheie-valoare.

Înainte de a merge mai departe, iată câteva puncte care merită remarcate:

  • În Python, un obiect JSON este stocat ca dicționar.
  • O matrice în JSON este stocată ca o listă Python.
  • În JSON, valorile booleene sunt notate ca adevărate și false. În Python, acestea sunt convertite în booleanele True și False.

Pentru mai multe detalii despre tipurile de date care sunt traduse din JSON în Python, citiți documentele Aici.

Deoarece modulul json face parte din biblioteca standard Python, nu trebuie să-l instalați. Puteți importa în directorul dvs. curent, astfel:

import json

Cum să încărcați un șir JSON în Python

Sintaxa generală pentru încărcarea unui șir JSON în Python este:

<dict_obj> = json.loads(<json_str>)

Aici,

  • este dicționarul Python în care doriți să încărcați șirul JSON,
  • este orice șir JSON valid.

Aceasta încarcă în dicționarul Python .

Să codificăm un exemplu. Aici 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"
        }
    ]
}
'''

Și fragmentul de cod de mai jos arată cum puteți încărca șirul JSON json_str într-un dicționar Python folosind metoda loads(). Puteți utiliza funcția încorporată type() pentru a verifica dacă py_dict este 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 arată în codul de mai sus, toate câmpurile din șirul JSON sunt perechi cheie-valoare în py_dict.

Cum se creează șiruri JSON în Python

Să presupunem că aveți un dicționar Python. Deci, cum creezi un șir JSON din el?

Puteți face acest lucru folosind metoda dumps() cu această sintaxă:

<json_str> = json.dumps(<dict_obj>)

Aici,

  • este dicționarul Python din care doriți să creați șirul JSON,
  • este șirul JSON rezultat.

Deci, metoda dumps() aruncă într-un șir JSON .

În dicționarul nostru Python existent py_dict. să adăugăm o nouă cheie „filme”. Puteți face acest lucru așa cum se arată în următorul fragment de cod:

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]

Acum, să aruncăm dicționarul modificat într-un șir JSON nou 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 vedea în exemplul de mai sus, șirul JSON de ieșire este dificil de citit fără formatare adecvată. Puteți utiliza parametrul opțional indentare pentru a adăuga indentare.

Și puteți face acest lucru setând indentarea unui număr întreg ca 2, așa cum se arată mai jos:

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 rezultatul a fost formatat cu indentare și este ușor de urmărit.

Notă: 💡 Dacă doriți ca cheile să fie sortate în ordine alfabetică, puteți seta parametrul sort_keys la True.

După cum puteți vedea în fragmentul de cod de mai jos, cheile au fost acum sortate în ordine 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"
    }
  ]

Și cheile apar acum în ordine alfabetică: „autor”, „titlu” și „an”.

Până acum, ați învățat cum să lucrați cu șiruri JSON în Python. În secțiunea următoare, veți învăța cum să lucrați cu fișiere JSON.

Cum să citiți un fișier JSON în Python

Pentru a citi un fișier JSON în Python, utilizați următoarea sintaxă:

json.load(<json-file>) 

# where <json-file> is any valid JSON file.

Observați cum folosim metoda load() și nu metoda loads(). loads() încarcă un șir JSON, în timp ce load() încarcă un fișier JSON.

Ar trebui să luați în considerare utilizarea managerilor de context atunci când lucrați cu fișiere în Python. De asemenea, puteți încerca să citiți fișierele după cum urmează, fără a utiliza managerul de context:

my_file = open('students.json','r')

contents = my_file.read()

print(contents)

file.close()

Dacă nu închideți fișierul, poate exista o potențială risipă de resurse.

Cu toate acestea, atunci când lucrați cu manageri de context, fișierele sunt închise automat odată ce operațiunile cu fișiere sunt finalizate.

Și puteți utiliza managerul de context pentru a citi fișierele, așa cum se arată mai jos:

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'}]}

Pe măsură ce citiți dintr-un fișier, specificați modul ca citire, indicat de „r” în codul de mai sus.

Notă: Pentru a naviga cu ușurință prin directorul curent, vă rugăm să vă asigurați că fișierul JSON se află în același folder ca main.py, așa cum se arată în imaginea de mai jos. Dacă fișierul dvs. JSON se află într-un folder diferit, asigurați-vă că specificați calea către fișier.

Citiți fișierul JSON în Python.

În secțiunea următoare, veți învăța cum să scrieți î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 fișier JSON nou, utilizați metoda dump() după cum se arată:

json.dump(<dict_obj>,<json_file>)

# where <dict_obj> is a Python dictionary 

# and <json_file> is the JSON file 

Deci, sintaxa de mai sus aruncă dicționarul în fișierul JSON .

În secțiunea anterioară, am avut dicționarul py_dict. Acum să aruncăm asta într-un nou fișier JSON. Și să-i denumim new_file.json.

Și următoarea celulă de cod arată cum puteți utiliza 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 dacă fișierul există. Dacă fișierul nu există, fișierul este creat.

După executarea celulei de cod de mai sus, veți vedea că un nou fișier JSON a fost creat în directorul de lucru curent. Și puteți continua și examina conținutul fișierului JSON.

Creați fișierul JSON în Python

Când scrieți în fișiere, obiectivul cheie este stocarea datelor. Și dacă doriți să păstrați formatarea, puteți utiliza și parametrii indent și sort_keys.

Concluzie

⏲ ​​Este timpul pentru un rezumat rapid.

În acest tutorial, ați învățat:

  • elementele de bază ale utilizării JSON,
  • cum să utilizați metodele loads() și load() pentru a citi șirurile JSON și, respectiv, fișierele JSON,
  • cum să folosiți metodele dump() și dump() pentru a descărca dicționarele Python în șiruri JSON și, respectiv, fișiere JSON.

Sper că ați găsit acest tutorial de ajutor. Învățare fericită!

De asemenea, puteți consulta Instrumentele JSON pentru a analiza, formata și valida.

  Cele mai bune instrumente și software de gestionare a corecțiilor pentru 2020