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