Para gestionar Documentos JSON desde Python se usa el modulo JSON que permite la traducción de datos JSON en valores de Python.
3.2 Tipos permitidos
JSON no puede almacenar cualquier tipo de valor Python, únicamente cadenas, enteros, reales, booleanos, listas, diccionarios y el tipo None.
3.3 Tipos no permitidos
JSON no puede representar objetos específicos de Python tales como Ficheros, expresiones regulares, ...
3.4 JSON desde cadena
Para traducir una cadena que contiene datos JSON en un valor de Python se utiliza el método json.loads().
3.5 Diccionario
La llamada al método loads() del módulo json permite cargar una cadena de datos JSON en valores de Python, retornando como resultado un diccionario.
Si se quiere acceder a los distintos elementos del diccionario se usan los índices. La cadena JSON utiliza dobles comillas para las claves.
3.6 Sin orden
Observar que los valores en los diccionarios no están ordenados, por lo que los pares clave-valor pueden aparecer en orden diferente a como aparecían en la cadena original.
3.7 Escribir JSON
Para escribir un valor de Python como una cadena de datos JSON se usa el método json.dumps().
3.8 Ejemplos de procesamiento
Para comprender la utilidad y aplicación de los Documentos JSON se van a ver un par de ejemplos de procesamiento de documentos JSON desde el lenguaje de programación Python.
3.9 Enunciado Ejemplo 1
Considerar un programa que permita:
Leer desde teclado una ciudad
Llamar a la API de geocodificación de Google
Extraer la información en formato JSON que nos devuelve.
3.10 Recoger JSON
Mediante urllib se recupera el texto en JSON que la API de geocodificación de Google devuelve.
3.11 Procesar JSON
Una vez recuperados los datos JSON se analizan y se muestran.
3.12 Ejemplos 1
3.13 Enunciado Ejemplo 2
Twitter tiene una disponible una API con servicios para los usuarios. Para poder utilizar dicha API es necesario el uso de firmas Oauth (es una tecnología para firmar peticiones en Internet) en cada solicitud.
3.14 Crear cuenta
Si no se dispone de cuenta en twitter, entonces hay que crearse una cuenta en https://twitter.com/
3.15 Aceder a apps
A continuación se navega a la dirección https://apps.twitter.com/, dónde habrá que autenticarse. Esta página da acceso a la api de twitter para desarrolladores.
3.16 Autenticarse
Nos autenticamos:
3.17 Dentro de apps
Una vez autenticados, se entra en la página principal:
3.18 Crear nueva app
Se selecciona "Create New App", lo que abre un formulario que hay que rellenar.
3.19 Información app
Cuando se pulsa sobre "Create your Twitter application" aparece una nueva página con la información de la aplicación.
3.20 Crear access token
Se pulsa sobre la solapa "Keys and Access content", y en dicha página se busca la sección "Your access token" dónde se pulsa sobre la opción "create my access token".
3.21 Valores app
Después de pulsar sobre la opción "create my access token" se han generado un conjunto de valores en la página.
3.22 Valores importantes
Los valores que son necesarios utilizar para acceder a los datos de twitter son:
api_key = "Valor de la api key"
api_secret = "Valor de la api secret"
access_token_key = "Valor de la access token"
access_token_secret = "Valor de la access token secret"
Una vez que se disponen de estos valores, se crea un programa en python para recuperar datos de Twitter.
3.23 Programa python
Se van a necesitar 4 programas:
oauth.py
twurl.py
hidden.py
twitter.py
3.24 oauth.py
El programa oauth.py contiene una implementación del protocolo de firmas oauth.
3.25 hidden.py
El programa hidden.py contiene los parámetros para acceder a la API de twitter que se han debido copiar de la app creada en la API en la sección de "Keys and Access content".
3.26 twurl.py
El programa twurl.py es un programa auxiliar necesario para realizar la conexión.
3.27 twitter.py
El programa twitter.py contiene el procesamiento buscado.
En este caso se recuperan los amigos de un usuario en Twitter, se analiza el JSON devuelto y se extrae parte de la información sobre esos amigos.
3.28 Otros datos
También recupera información de las cabeceras de respuesta HTTP.
En particular de x-rate-limit-remaining que informa sobre cuántas peticiones se pueden hacer antes de que ser bloqueados por un corto periodo de tiempo.