JSON és un format de text que permet representar qualsevol estructura de dades.
Introducció
La serialització i la deserialització JSON són els processos de conversió de dades JSON a i des d’altres formats, com ara objectes o strings de Python, per transmetre o emmagatzemar les dades.
A continuació tens un exemple en que serialitzem un objecte Python a un string JSON.
Crea el fitxer data.py:
= : None,
: ,
: 42.5,
: True,
: ,
}
=
Executem el fitxer:
{
Pots veure que el resultat és un string de Python formatejat segons les regles gramaticals de JSON.
Funcions comunes
A continuació es mostren algunes funcions comunes de la llibreria json que s’utilitzen per a la serialització i la deserialització.
json.dumps()
Aquesta funció s’utilitza per serialitzar un objecte Python en una string JSON.
La funció dumps() pren un sol argument, l’objecte Python, i retorna una string JSON.
Aquí tens un exemple: import json
# Python object to JSON string
=
=
# output: {"name": "John", "age": 30}json.loads()
Aquesta funció s’utilitza per un “parse” d’un srting JSON en un objecte Python.
La funció loads() pren un sol argument, el string JSON, i retorna un objecte Python.
Aquí tens un exemple:
# JSON string to Python object
=
=
# output: {'name': 'John', 'age': 30}json.dump()
Aquesta funció s’utilitza per serialitzar un objecte Python i escriure’l en un fitxer JSON.
La funció dump() pren dos arguments, l’objecte Python i l’objecte fitxer.
Aquí tens un exemple:
# serialize Python object and write to JSON file
=
json.load()
Aquesta funció s’utilitza per llegir un fitxer JSON i analitzar-ne el contingut en un objecte Python.
La funció load() pren un sol argument, l’objecte fitxer, i retorna un objecte Python.
Aquí tens un exemple:
# read JSON file and parse contents
=
# output: {'name': 'John', 'age': 30}AEMET
A continuació tens un codi que utilitza les llibreries requests i json per fer una sol·licitud a l’AEMET i recuperar dades:
=
= # Utlitza la teva API Key
= f
=
=
-
La línia
requests.get(url)fa la sol·licitud real i emmagatzema la resposta a la variableresponse. -
La línia
if response.status_code == 200:comprova si el codi de resposta és 200, la qual cosa significa que la sol·licitud ha tingut èxit. -
Si la sol·licitud té èxit, el codi carrega el text de resposta en un diccionari de Python mitjançant el mètode
json.loads()i l’emmagatzema a la variabledata.
Si executes el codi tens la URL on estan les dades meteorològiques:
Modifica el codi perquè consulti "datos" i torni la probabilitat de precipitació:
Show solution
=
=
= f
=
=
=
=
=
=
Resultat:
[
{
Impressió bonica de JSON
Pots utilitzar el mètode dumps() per obtenir una string JSON amb un format “bonic”.
= \
=
=
Això mostra el JSON formatat:
"ID": 10,
"Name": "Pankaj",
"Role": "CEO"
},
"ID": 20,
"Name": "David Lee",
"Role": "Editor"
}
]-
Primer, utilitzes
json.loads()per crear l’objecte JSON a partir del string JSON. -
El mètode
json.dumps()rep l’objecte JSON i retorna una string amb format JSON. El paràmetreindentdefineix el nivell de sagnat per al string formatat.