JSON Python Parsing un ghid simplu

JSON Python Parsing un ghid simplu / Programare

JSON (reprezintă “Notă de obiect JavaScript”) este un format bazat pe text care facilitează schimbul de date între diverse aplicații. De exemplu, o aplicație scrisă în C ++ Cum să Fix Windows Visual C ++ Erori Runtime Cum la spre Fix Windows Visual C Runtime Erori Visual C ++ Erori sunt o problemă obișnuită pentru utilizatorii de Windows. Dar știi cum să le rezolvi? Citește mai mult rulează pe Windows poate schimba cu ușurință date JSON cu o aplicație scrisă în Python și care rulează pe Linux. Simplitatea și flexibilitatea acestuia au condus la utilizarea pe scară largă în ultimii ani, în special în favoarea formatelor anterioare bazate pe XML.

Există biblioteci și seturi de instrumente disponibile pentru parsarea și generarea JSON din aproape orice limbă și mediu. Acest articol se concentrează pe metodele și problemele apărute în urma procesării JSON folosind Python.

Unele mostre JSON

Cea mai obișnuită entitate JSON pe care o veți întâlni este una obiect: un set de mapări de valori cheie în formatul prezentat mai jos.

person.json:

"primul nume": "Alice", "lastName": "Hall", "age": 35 

Iată cum puteți reprezenta o serie de obiecte. În această reprezentare, fiecare element al matricei este un obiect. Următorul este un eșantion de salarii ale jucătorilor de baseball.

salaries.json:

"an": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "salariu": 870000; "ATL", "leagueId": "NL", "playerId": "bedrost01", "salariu": 550000] 

Desigur, puteți reprezenta și o serie de scalare. Se pare ca aceasta:

["salut", "lume", 35] 

Parsarea JSON în Python

Python Cum să obțineți Python și JavaScript pentru a comunica folosind JSON Cum să obțineți Python și JavaScript pentru a comunica utilizând JSON Astăzi vă voi arăta cum să utilizați JSON pentru a trimite date de la JavaScript la Python. Voi descrie cum să configurați un server web, împreună cu codul de care aveți nevoie. Citește mai mult oferă JSON modul care poate fi folosit atât pentru analiza JSON, cât și pentru generarea JSON din obiectele și listele Python.

Următorul fragment de cod arată cum se deschide un fișier JSON și se încarcă datele într-o variabilă.

importați json cu open ('sample.json', 'r') ca fp: obj = json.load (fp) 

Când aveți un șir care conține datele JSON, îl puteți converti într-un obiect (sau listă) python cu următoarele:

vol = json.loads ("" "" primaName ":" Alice "," lastName ":" Hall "," age ": 35 

Pentru a analiza o adresă URL JSON, puteți crea un obiect URL folosind urllib2 si foloseste json.load () Ca înainte.

import urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') volum = json.load (url) 

Manipularea erorilor

Atunci când JSON-ul are erori, veți obține o ValueError. Puteți face față și puteți lua măsuri corective dacă este necesar.

încercați: obj = json.loads ("" "" firstName ":" Alice "," lastName: Hall "," age ": 35" "

Parsarea JSON din linia de comandă

Uneori, este util să analizăm JSON folosind linia de comandă python, probabil pentru a verifica dacă există erori sau pentru a obține o ieșire bine despărțită.

"GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para" "Un limbaj de meta-markup, folosit pentru a crea limbi de marcare, cum ar fi DocBook.", "GlossSee": "markup", "Acronim": "SGML", "GlossTerm": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "titlu": "S" " 

Pentru a obține o ieșire indentată din fișierul JSON de mai sus, puteți face următoarele:

"GlossList": "GlossEntry": "Abbrev": "ISO 8879: 1986", "Acronim": "SGML" "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "O limbă meta-markup, folosită pentru a crea limbi de marcare, cum ar fi DocBook." , "GlossSee": "markup", "GlossTerm": "Limbaj standard generalizat de marcare", "ID": "SGML", " ":" glosar exemplu " 

Iată cum puteți încărca obiectul JSON în Python și extrageți doar ceea ce aveți nevoie.

python -c 'importul json; fp = deschis ("glossary.json", "r"); vol = json.load (fp); fp.close (); print obj ["glosar"] ["titlu"] "# imprimă exemplul de glosar

Accesarea datelor

Odată ce ați încărcat datele JSON într-o variabilă Python, puteți accesa datele așa cum ați proceda cu orice dicționar python (sau lista, după caz). De exemplu, datele JSON de mai sus pot fi accesate după cum urmează:

firstName = obj ["firstName"] ultimaName = obj ["Hall"] vârstă = obj ["vârstă"] 

Tipuri de date

Tipurile de date sunt determinate automat din date. Rețineți că vârstă este analizat ca un număr întreg.

tip (obj ["firstName"]), tip (obj ["lastName"])    

Următorul tabel de conversie este utilizat pentru a converti de la JSON la Python.

Parsarea JSON utilizând o clasă personalizată

Implicit, un obiect JSON este analizat într-un python dict. Uneori este posibil să aveți nevoie să creați automat un obiect din clasa proprie din datele JSON. Puteți face acest lucru prin specificarea unui object_hook care gestionează conversia. Următorul exemplu arată cum.

Aici este o clasă personalizată reprezentând a Persoană.

__init __ (sine, numeNumă, numeNumă, vârstă): self.firstName = numeNameName self.lastName = numeNameName self.age = vârsta def __str __ (auto): return "firstName" = "0 "lastName" = "1", "vârstă" = 2 "(format self.firstName, auto.lastName, self.age) 

O instanță a acestei clase este creată prin transmiterea argumentelor necesare după cum urmează:

persoană = Persoană ("Crystal", "Newell", 27) 

Pentru a utiliza această clasă pentru a crea instanțe atunci când analizați JSON, aveți nevoie de un object_hook funcție definită după cum urmează: Funcția primește un python dict și returnează un obiect din clasa corectă.

def obj_creator (d): returnează persoana (d ['firstName'], d ['lastName'], d ['age']) 

Acum puteți folosi acest lucru object_hook când invocăm parserul JSON.

cu deschise ("sample.json", "r") ca fp: obj = json.load (fp, object_hook = obj_creator) print obj # prints "firstName" = "Alice", "lastName" vârstă "= 35 

Exemple de utilizare JSON

JSON este extrem de popular în zilele noastre. Multe site-uri web și aplicații SaaS (Software As A Service) oferă o ieșire JSON care poate fi consumată direct de aplicații. Unele dintre cele disponibile publicului includ:

  • StackOverflow / StackExchange. Aici este o adresă URL care întoarce o listă de întrebări în format JSON.
  • GitHub oferă un JSON api la adresa https://developer.github.com/v3/.
  • Și aici este API-ul Flickr: https://developer.yahoo.com/flickr/.

Utilizați JSON pentru a consuma sau a furniza servicii? Și folosiți Python în stiva dvs. de tehnologie? Explicați în comentariile de mai jos.

Explorați mai multe despre: Programare, Python.