JSON

Adolfo Sanz De Diego

Octubre 2017

1 Acerca de

1.1 Autor

1.2 Licencia

1.3 Fuente

2 Introducción a JSON

2.1 ¿Qué es?

  • JSON (JavaScript Object Notation) es un formato de datos que se caracteriza:
    • Está basado en JavaScript.
    • Es utilizado para el intercambio de datos.
    • Es utilizado por muchas APIs de sitios web tales como Facebook, Twitter,... para devolver su contenido.
    • Es independiente del lenguaje
    • Los archivos tienen extensión .json

2.2 Parejas clave=valor

  • JSON representa objetos de manera textual mediante parejas clave=valor,
Ejemplo JSON
Ejemplo JSON

2.3 Sintaxis JSON

  • Un objeto se representa como una secuencia de parejas clave=valor encerradas entre llaves { y }.

  • Las claves son cadenas de texto entre comillas " y ".

2.4 Valores JSON

  • Tipos básicos: cadena, número, booleano, null
  • Arrays de valores: entre corchetes [ y ]
  • Otros objetos JSON: entre llaves { y }

2.5 Ejemplo JSON (I)

  • Considerar el siguiente ejemplo dónde se quiere representar la ficha de un estudiante con sus datos personales y asignaturas matriculadas:
    • Nombre="Pepito Pérez"
    • DNI="517899R"
    • Edad="22"

2.6 Ejemplo JSON (II)

  • Asignaturas matriculadas:
    • Obligatorias: Sistemas Operativos, Compiladores, y Bases de Datos.
    • Optativas: Bases de Datos NoSQL, Minería de Datos, Programación Lógica.
    • Libre Elección: Ajedrez, Música Clásica

2.7 Ejemplo JSON (III)

  • La ficha de información se puede representar en un documento JSON de la siguiente manera:
Ejemplo JSON
Ejemplo JSON

2.8 Ejemplo API

3 JSON desde Python

3.1 Módulo JSON

  • 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().
Cargar JSON
Cargar JSON

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().
Escribir JSON
Escribir JSON

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.
Ejemplo 1 - recoger JSON
Ejemplo 1 - recoger JSON

3.11 Procesar JSON

  • Una vez recuperados los datos JSON se analizan y se muestran.
Ejemplo 1 - procesar JSON
Ejemplo 1 - procesar JSON

3.12 Ejemplos 1

Ejemplo 1 - completo
Ejemplo 1 - completo

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:
Ejemplo 2 - autenticarse en twitter
Ejemplo 2 - autenticarse en twitter

3.17 Dentro de apps

  • Una vez autenticados, se entra en la página principal:
Ejemplo 2 - dentro de apps de twitter
Ejemplo 2 - dentro de apps de twitter

3.18 Crear nueva app

  • Se selecciona "Create New App", lo que abre un formulario que hay que rellenar.
Ejemplo 2 - dentro de apps de twitter
Ejemplo 2 - dentro de apps de twitter

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.
Ejemplo 2 - información de apps de twitter
Ejemplo 2 - información de apps de twitter

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".
Ejemplo 2 - crear access token de twitter
Ejemplo 2 - crear access token de twitter

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.
Ejemplo 2 - valores app de twitter
Ejemplo 2 - valores app de twitter

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".
Ejemplo 2 - hidden.py
Ejemplo 2 - hidden.py

3.26 twurl.py

  • El programa twurl.py es un programa auxiliar necesario para realizar la conexión.
Ejemplo 2 - twurl.py
Ejemplo 2 - twurl.py

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.

3.29 Código twitter.py

Ejemplo 2 - twitter.py
Ejemplo 2 - twitter.py