JSON y datos

El formato que hace que un programa en Python y una app en el celular se entiendan.

Ya sabes que un diccionario de Python guarda datos con nombre. El problema es que ese diccionario solo existe mientras tu programa corre: para guardarlo en un archivo, mandarlo a internet, o que lo lea un programa escrito en otro lenguaje, necesitas convertirlo a texto plano con una estructura acordada. Eso es JSON.

Fíjate que un JSON se ve casi idéntico a un diccionario de Python. No es casualidad: Python copió esa sintaxis de JavaScript, y JSON nació justamente para ser ese "casi igual" que cualquier lenguaje puede leer.

El módulo json viene incluido en Python. dumps (de "dump string") convierte un diccionario o lista en un texto JSON.

loads hace lo contrario: toma un texto JSON —el que llega de un archivo, de internet, o donde sea— y lo convierte de vuelta en un diccionario de Python normal, con el que ya sabes trabajar.

Juntando esto con open(), que ya viste en el tutorial de archivos, puedes guardar el progreso de un programa y recuperarlo la próxima vez que corra.

Nota el detalle: json.dump() (sin "s") escribe directo a un archivo, y json.dumps() (con "s") devuelve un texto. Lo mismo para load / loads. Es fácil confundirlos al principio.

Esta misma idea es lo que hay detrás de cuando una página web pide datos a un servidor: el servidor le manda JSON, y el navegador lo convierte de vuelta a algo con lo que trabajar —ahí está la conexión con las APIs de las que seguro has oído hablar.

Convertir datos de Python a JSON y de vuelta, guardar el progreso de un programa en un archivo, y por qué este formato es el idioma común de casi todo internet.

Ahora, algo que todo programa necesita tarde o temprano: manejar fechas y el paso del tiempo.