Cum se lucrează cu datele JSON utilizând Python

Acest tutorial arată cât de ușor este să utilizați limba de programare Python pentru a lucra cu datele JSON.

Înainte de a începe acest subiect, să definim pe scurt ceea ce înțelegem prin JSON. Să vedem cum definește site-ul principal al JSON:

JSON (JavaScript Object Notation) este un format ușor de schimb de date. Este ușor pentru oameni să citească și să scrie. Este ușor pentru mașini să parseze și să genereze. Se bazează pe un subset al limbajului de programare JavaScript, ECMA-262 ediția a treia - decembrie 1999. JSON este un format de text care este complet independent de limbă, dar utilizează convenții cunoscute de programatorii familiei de limbi C, inclusiv C , C ++, C #, Java, JavaScript, Perl, Python și multe altele. Aceste proprietăți fac din JSON un limbaj ideal pentru schimbul de date.

Astfel, JSON este o modalitate simplă de a crea și de a stoca structuri de date în cadrul JavaScript. Motivul pentru care vedeți JavaScript în acronim se datorează faptului că un obiect JavaScript este creat atunci când se stochează date cu JSON. Dar, nu vă faceți griji, nu trebuie să știți JavaScript pentru a lucra cu fișiere JSON, ci mai degrabă despre sintaxa JSON (format) în sine.

Pe scurt, JSON este un mod prin care stocăm și schimbăm date, care se realizează prin sintaxa sa, și este folosit în multe aplicații web. Lucru frumos despre JSON este că are un format citit de om și acesta poate fi unul dintre motivele pentru care se folosește în transmiterea de date, pe lângă eficacitatea acestuia atunci când se lucrează cu API-uri.

Un exemplu de date în format JSON este după cum urmează:

"nume": "Frank", "vârstă": 39, "este angajat": true

În acest tutorial, vă voi arăta cum să utilizați Python pentru a lucra cu fișierele JSON. Deci sa începem!

Python și JSON

Python simplifică funcționarea cu fișierele JSON. Modulul utilizat în acest scop este JSON modul. Acest modul ar trebui să fie inclus (integrat) în instalarea dvs. Python și, prin urmare, nu aveți nevoie să instalați module externe, cum am procedat, de exemplu, când lucrați cu fișiere PDF și Excel. Singurul lucru de care aveți nevoie pentru a utiliza acest modul este să-l importați:

importați json

Dar, ce face JSON biblioteca face? Această bibliotecă analizează în principal JSON din fișiere sau șiruri de caractere. De asemenea, analizează JSON într-un dicționar sau o listă în Python și invers, care convertește un dicționar sau o listă Python în șiruri de caractere JSON.

JSON în Python

Citirea JSON înseamnă convertirea JSON într-o valoare Python (obiect). După cum sa menționat mai sus, JSON biblioteca analizează JSON într-un dicționar sau listă în Python. Pentru a face acest lucru, folosim sarcini () (încărcare dintr-un șir), după cum urmează:

import json jsonData = '"nume": "Frank", "vârstă": 39' jsonToPython = json.loads (jsonData)

Dacă doriți să vedeți ieșirea, faceți a tipăriți jsonToPython, caz în care veți obține următoarea ieșire:

u'age ': 39, u'name': u'Frank '

Adică, datele sunt returnate ca un dicționar Python (structura de date obiect JSON). Deci, va declara print jsonToPython ['name'] returnați orice ieșire? Mergeți, încercați.

Python către JSON

În secțiunea anterioară, am văzut cum să convertim JSON într-o valoare Python (adică dicționar). În această secțiune, vă voi arăta cum putem converti (codifica) o valoare Python în JSON.

Spuneți că avem următorul Dicționar în Python:

import json pythonDictionary = 'nume': 'Bob', 'vârstă': 44, 'isEmployed': True dictionaryToJson = json.dumps (pythonDictionary)

Dacă noi dictionaryToJson de imprimare, primim următoarele date JSON:

"vârstă": 44, "este angajat": adevărat, "nume": "Bob"

Prin urmare, această ieșire este considerată reprezentarea datelor obiectului (Dicționar). Metoda halde () a fost cheia unei astfel de operațiuni.

Este important de menționat că JSON nu poate stoca toate tipurile de obiecte Python, ci numai următoarele tipuri: Liste; dicţionare; booleane; numere; Caractere de caractere; și Nici unul. Astfel, orice alte tipuri trebuie convertite pentru a fi stocate în JSON.

Să presupunem că avem următoarea clasă:

clasa angajat (obiect): def __init __ (sine, nume): self.name = nume

Să presupunem că am creat un obiect nou abder, după cum urmează:

abder = Angajat ("Abder")

Dacă am vrea să convertim acest obiect la JSON? Acesta este json.dumps (abder)? În acest caz, veți primi o eroare similară cu următoarea:

Traceback (cel mai recent apel ultimul): Fișierul "test.py", linia 8, în  abderJson = json.dumps (abder) Fișierul "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", linia 243, în depozitele returnate _default_encoder.encode (obj) Fișierul "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", linia 207, în encode chunks = auto.iterencode (o, _one_shot = True) Fișierul "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , linia 270, în iterencode retur _iterencode (o, 0) Fișierul "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py" , linia 184, în creștere implicită TypeError (repr (o) + "nu este JSON serializabil") TypeError: <__main__.Employee object at 0x10e74b750> nu este JSON serializabil

Dar există o soluție? Din fericire există. Îmi place soluția descrisă pe site-ul Python Tips. Pentru a rezolva această problemă, putem defini o metodă similară cu următoarea:

def jsonDefault (obiect): returnează obiectul .__ dict__

Apoi codificați obiectul în JSON după cum urmează:

jsonAbder = json.dumps (abder, default = jsonDefault)

daca tu tipăriți jsonAbder, trebuie să obțineți următoarele rezultate:

"nume": "Abder"

Am codificat acum un obiect Python (abder) în JSON.

Concluzie

Din acest tutorial putem observa că Python dovedeste din nou și din nou nu numai capacitatea sa de a lucra cu aplicații diferite, ci și flexibilitatea de a lucra cu diferite probleme în timp ce lucrează cu o aplicație, așa cum am văzut în ultima parte a tutorialului.

Dacă doriți să aflați mai multe despre JSON modul, puteți vizita pagina de documentare.

Aflați JavaScript: Ghidul complet

Am creat un ghid complet care vă ajută să învățați JavaScript, indiferent dacă începeți doar ca dezvoltator web sau doriți să explorați subiecte mai avansate.

Aflați Python

Aflați Python cu ghidul nostru complet de instrucțiuni Python, indiferent dacă sunteți doar începători sau sunteți un coder experimentat în căutarea unor noi abilități.

Cod