Diferencia entre revisiones de «Usuario:Lmorillas/modulo programacion/python/json»

De WikiEducator
Saltar a: navegación, buscar
 
(6 revisiones intermedias por el mismo usuario no mostrado)
Línea 2: Línea 2:
  
 
__TOC__
 
__TOC__
 +
 +
{{Conocimiento previo|
 +
 +
''JSON, acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML.
 +
 +
La simplicidad de JSON ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos en este contexto es que es mucho más sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando el procedimiento eval(), lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web.''
 +
 +
Fuente: http://es.wikipedia.org/wiki/JSON
 +
}}
 +
  
 
== Doc ==
 
== Doc ==
Línea 7: Línea 17:
 
* http://developer.yahoo.com/python/python-json.html
 
* http://developer.yahoo.com/python/python-json.html
  
== Ejemplo: Datos del tráfico de http://datos.zaragoza.es==
+
 
 +
== Ejemplo: Datos del tráfico de http://datos.zaragoza.es ==
 
<source lang="python">
 
<source lang="python">
 
from urllib2 import urlopen
 
from urllib2 import urlopen
Línea 38: Línea 49:
  
  
==Ejercicio: Zonas con estado de tráfico complicado==
+
{{/ejercicio estado trafico}}
* En http://www.zaragoza.es/trafico/estado/estadoFicherosTrafico.json está la descripción de todos los ficheros involucrados en los datos de tráfico,
+
* http://www.zaragoza.es/trafico/estado/tramoswgs84.json describe los tramos en formato wgs84
+
* http://www.zaragoza.es/trafico/estado/tramos23030.json describe los mismos tramos con coordenadas utm30
+
* http://www.zaragoza.es/trafico/estado/estado.json Tiene la información de estado de los tramos:
+
** '''timestamp''' indica la hora a la que esos datos se han generado en el servidor de tráfico en hora UTC. El formato de la fecha es YYYYMMDD_HHMMSSZ (4 dígitos para el año, 2 para el mes, 2 para el día, un guión bajo, 2 dígitos para la hora, 2 para el minuto, 2 para el segundo y el literal "Z" para indicar que la hora es Zulu o UTC)
+
** '''estados''' contiene una cadena en la que cada carácter representa el estado de un tramo, según la posición que ocupa. Es decir, el estado del tramo con id=23 es el carácter número 23 de dicha cadena. Por lo tanto, si el máximo id de tramo es 219, la cadena tiene que tener 220 caracteres de largo. Si en el futuro se borran tramos, se guardará la posición en la cadena con el carácter "-" (guión). Los estados pueden ser:
+
*** r  rojo
+
*** y amarillo
+
*** g verde
+
*** b negro
+
*** t transparente
+
*** - no existe el tramo
+
 
+
{{Actividad|
+
Title=Ejercicio estado del tráfico|
+
Haz un programa que a partir de la información de los ficheros citados antes, muestre los tramos con tráfico negro, rojo y amarillo (ordenados y agrupados así)
+
}}
+

Última revisión de 22:54 5 feb 2013




Icon preknowledge.gif

Conocimiento previo

JSON, acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML.

La simplicidad de JSON ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos en este contexto es que es mucho más sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando el procedimiento eval(), lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web.

Fuente: http://es.wikipedia.org/wiki/JSON




Doc


Ejemplo: Datos del tráfico de http://datos.zaragoza.es

from urllib2 import urlopen
from json import load
 
urlt = 'http://www.zaragoza.es/trafico/estado/tiempos2.json'
tiempos = load(urlopen(urlt))
 
# los datos están en la clave tiempos
tiempos = tiempos.get('tiempos')
 
# mostramos inicio y fin de cada tramo
for t in tiempos: 
    print t.get('inicio'), '--->', t.get('fin')
 
# cuánto va a costar ir de la cª madrid al actur?
for t in tiempos:
    ini = t.get('inicio')
    fin = t.get('fin')
    if 'madrid' in ini.lower() and 'actur' in fin.lower():
         print ini, fin, t.get('minutosActual')
 
# Tramos que acumulan retrasos
for t in tiempos:
    act = t.get('minutosActual')
    normal = t.get('minutosNormal')
    if act > normal:
         print t.get('inicio'), t.get('fin')



Ejercicio estado del tráfico

Icon activity.jpg

Ejercicio estado del tráfico

Haz un programa que a partir de la información de los datos de http://datos.zaragoza.es muestre los tramos con tráfico negro, rojo y amarillo (ordenados y agrupados así)

Datos: estado del tráfico




Icon present.gif
Tip: Fichero de estados


  • timestamp indica la hora a la que esos datos se han generado en el servidor de tráfico en hora UTC. El formato de la fecha es YYYYMMDD_HHMMSSZ (4 dígitos para el año, 2 para el mes, 2 para el día, un guión bajo, 2 dígitos para la hora, 2 para el minuto, 2 para el segundo y el literal "Z" para indicar que la hora es Zulu o UTC)
  • estados contiene una cadena en la que cada carácter representa el estado de un tramo, según la posición que ocupa. Es decir, el estado del tramo con id=23 es el carácter número 23 de dicha cadena. Por lo tanto, si el máximo id de tramo es 219, la cadena tiene que tener 220 caracteres de largo. Si en el futuro se borran tramos, se guardará la posición en la cadena con el carácter "-" (guión). Los estados pueden ser:
 r  rojo
 y amarillo
 g verde
 b negro
 t transparente
 - no existe el tramo