---
# System prepended metadata

title: M06 Accés a dades. 002. JSON.
tags: [asix, DAM, ' M6', M3]

---

---
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;">
    
![](https://hackmd.io/_uploads/HJiR4eGJT.png)    
    
</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.

![images](https://hackmd.io/_uploads/BkkHFeqMR.png)

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'__*.

