---
title: DAM-M06 Accés a dades / ASIX-M03 Programació bàsica. 002. JSON.
tags: DAM, ASIX, Python, M6, M3
---
<div style="width: 30%; margin-left: auto;">

</div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Llicència de Creative Commons" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />Aquesta obra està subjecta a una llicència de <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Reconeixement-CompartirIgual 4.0 Internacional de Creative Commons</a>
[Link en MarkDown](https://hackmd.io/@JdaXaviQ/r1rk4RmEs)
# DAM M06-UF01 Accés a dades / ASIX M03-UF03.
## JSON.

Com ja sabem, JSON és un format per serialitzar dades, és a dir, ens permet convertir estructures de dades en cadenes de text i viceversa.
Una de les biblioteques més còmodes per a treballar amb JSON dins de Python és: 'json'.
Aquesta biblioteca no necessita ser instal·lada perquè normalment ja s'instal·la juntament amb la resta del llenguatge.
### Funcions bàsiques.
La biblioteca ens ofereix 4 funcions bàsiques:
* 2 funcions per deserialitzar (pas de text a estructura de dades en Python):
* json.load: Llegeix un fitxer que conté text en format JSON i intenta decodificar el seu contingut.
* json.loads: Decodifica una cadena de text en format JSON.
* 2 funcions per serialitzar (pas d'estructura de dades en Python a text):
* json.dump: Serialitza un objecte Python a un fitxer de text en format JSON.
* json.dumps: Serialitza un objecte Python a una cadena de text.
Exemples:
```python
import json
# serialitza un diccionari de Python en un objecte JSON
client = {'nom': 'Julia', 'telefon': '650 00 55 00'}
text_amb_format_json = json.dumps(client)
print(text_amb_format_json) # {"nom": "Julia", "telefon": "650 00 55 00"}
# genera una variable de python a partir d'un text amb format json
copia_de_client = json.loads(text_amb_format_json)
# escriu una variable python directament a un fitxer,
# serialitzant el seu contingut a format JSON
with open(RUTA_AL_FITXER, 'w') as arxiu:
json.dump(client, arxiu)
# recupera el contingut d'un fitxer amb format json
# directament a una variable
with open(RUTA_AL_FITXER, "r") as arxiu:
una_altra_copia_de_client = json.load(arxiu)
```
### Canviant el format a la sortida:
La funció dumps ens permet el pas de paràmetres que modifiquen l'aspecte de la sortida.
Exemple:
```python
print(json.dumps(client, indent=4, sort_keys=True))
```
{
"nom": "Julia",
"telefon": "650 00 55 00"
}
__indent__: Mostra el text indentat amb tants espais en blanc com li indiquem en aquest paràmetre.
__sort_keys__: Ordena alfabèticament les claus dels objectes dins del JSON.
Aquest paràmetres de modificació del format de serialització són vàlids tant per a *__'json.dump'__* com per a *__'json.dumps'__*.