Formato de Datos CCNA
Formato de Datos CCNA

Formato de Datos

Formato de Datos
5

Resumen

Aprenderás a comparar los formatos de datos JSON, YAML y XML. ¡¡Empieza a aprender CCNA 200-301 gratis ahora mismo!!

¡Bienvenido!: Este tema forma parte del Módulo 14 del curso de Cisco CCNA 3, para un mejor seguimiento del curso puede ir a la sección CCNA 3 para guiarte del índice.

1. Vídeo – Formato de Datos

De hecho, los dispositivos inteligentes, son pequeñas computadoras. Para que un dispositivo inteligente, como un actuador, reaccione a condiciones cambiantes, debe ser capaz de recibir e interpretar la información enviada por otros dispositivos inteligente, como un sensor. Estos dos dispositivos inteligentes deben compartir un “lenguaje” en común, el cual es llamado formato de datos. La información compartida es usada de igual manera por otros dispositivos en la red.

Para aprender acerca del formato de datos haz clic en reproducir.

2. El Concepto del Formato de Datos

Cuando se comparten datos con personas, las posibilidades para desplegar la información son casi ilimitadas. Por ejemplo, imagina como un restaurante puede presentar su menú. Puede ser solamente texto, una lista con viñetas, o imágenes con una descripción textual, o solamente imágenes Todas estas son maneras diferentes en las cuales el restaurante puede presentar la información de su menú. Un formato bien diseñado, es dictado por su facilidad de interpretación. Este mismo principio aplica a los datos compartidos entre computadoras. Una computadora debe poner los datos en un formato que otra computadora pueda entender.

Los formatos son simplemente una manera de almacenar e intercambiar datos de una manera estructurada. Uno de esos formatos es el Lenguaje de Marcado de Hipertexto (Hypertext Markup Language – HTML). HTML es un estándar que describe la estructura de las páginas web, como se aprecia en la imagen.

Lenguaje de Marcado de Hipertexto
Lenguaje de Marcado de Hipertexto

Existen algunos formatos de datos comunes que son usados en muchas aplicaciones incluidas automatización de la red y programación;

  • Notación de Objeto de JavaScript (JavaScript Object Notation – JSON)
  • Lenguaje de Marcado Extensible (XML)
  • YAML no es un Lenguaje de Marcado (YAML Ain’t Markup Language – YAML)

El formato de datos seleccionado dependerá del formato que es usado por la aplicación, herramienta o las instrucciones que estés usando. Muchos sistemas pueden soportar más de un formato, lo que le permite al usuario elegir el preferido.

3. Reglas del Formato de Datos

El formato de datos posee reglas y estructuras similares a los que tenemos en programación y lenguajes escritos. Cada formato va a tener características específicas:

  • La sintaxis, incluye diferentes tipos de símbolos, tales como [ ], ( ), { }, el uso de espacio o sangría, comillas, comas, y más.
  • ¿Cómo se representan los objetos?, como caracteres, una cadena de caracteres, una lista, y vectores.
  • ¿Cómo se representan los pares llave/valor (key/value)? La llave (key) usualmente se encuentra al lado izquierdo e identifica o describe los datos. El valor (value) que se encuentra al lado derecho, consiste en los datos, los cuales pueden ser caracteres, cadenas de caracteres, números, listas o cualquier otro tipo de información.

Busca en Internet “open notify ISS location” para encontrar una página que permita rastrear la ubicación de la Estación Espacial Internacional (ISS, International Space Station). En este sitio puedes observar los formatos de datos usados y algunas similitudes entre ellos. La página web incluye un enlace para realizar una llamada mediante la interfaz de programación de aplicaciones (Application Programming Interface – API) hacia un servidor, la cual muestra como respuesta la latitud y longitud actual de la estación espacial en conjunto con marca temporal UNIX. El siguiente ejemplo muestra la información enviada por el servidor usando notación de objeto de JavaScript (JavaScript Object Notation – JSON). La información es mostrada en formato bruto. Esto puede dificultar el entendimiento de la estructura de datos.

{"message": "success", "timestamp": 1560789216, "iss_position": {"latitude": "25.9990", "longitude": "-132.6992"}}

Busque en Internet la extensión, para navegadores (browsers), “JSONView” o cualquier extensión que te permita visualizar el formato JSON de manera mas amigable Los objetos de datos son mostrados en pares llave/valor (key/value). El siguiente resultado muestra la misma información usando JSONView. Los pares llave/valor (key/value) son mucho más fáciles de interpretar. En el siguiente ejemplo, puedes ver la llave (key) latitud (latitude) y su valor (value) 25.9990.

{
	"message": "success",
	"timestamp": 1560789260,
	"iss_position": {
		"latitude": "25.9990",
		"longitude": "-132.6992"
	}
}

Nota: JSONView podría remover las comillas de la sección llave (key). Las comillas son requeridas cuando se codifican pares llave/valor (key/value) en JSON.

4. Comparar Formato de Datos

Para ver la misma información en formatos distintos, como XML o YAML, busca alguna herramienta de conversión JSON. En este momento, no es importante entender los detalles de cada formato, pero si debes notar como cada formato usa la sintaxis y como lo pares llave/valor son representados.

Formato JSON

{
	"message": "success",
	"timestamp": 1560789260,
	"iss_position": {
		"latitude": "25.9990",
		"longitude": "-132.6992"
	}
}

Formato YAML

message: success
timestamp: 1560789260
iss_position:
    latitude: '25.9990'
    longitude: '-132.6992'

Formato XML

<?xml version="1.0" encoding="UTF-8" ?>
<root>
  <message>success</message>
  <timestamp>1560789260</timestamp>
  <iss_position>
    <latitude>25.9990</latitude>
    <longitude>-132.6992</longitude>
  </iss_position>
</root>

5. Formato de Datos JSON

JSON es un formato legible para humanos, usado por aplicaciones para almacenar, transferir y leer información. JSON es relativamente popular y es usado por servicios web y API para brindar información pública. Esto se debe a que es fácil de analizar y puede ser usado con la mayoría de lenguajes de programación moderno, entre ellos Python.

El siguiente ejemplo muestra el resultado parcial de ejecutar el comando show interface GigabitEthernet0/0/0 en el router.

Salida IOS Router

GigabitEthernet0/0/0 is up, line protocol is up (connected)
  Description: Wide Area Network
  Internet address is 172.16.0.2/24

Esta misma información puede ser mostrada usando el formato JSON. Observa que cada objecto (cada par de llave/valor) es una porción de información diferente acerca de las interfaces, incluyendo su nombre, una descripción, y si se encuentra habilitada.

Salida JSON

{
    "ietf-interfaces:interface": {
         "name": "GigabitEthernet0/0/0",
         "description": "Wide Area Network",
         "enabled": true,
         "ietf-ip:ipv4": {
             "address": [
                 {
                     "ip": "172.16.0.2",
                     "netmask": "255.255.255.0"
                 }
             ]
          }
    }
}

6. Reglas de Sintaxis JSON

Estas son algunas de las características de el formato JSON:

  • JSON utiliza una estructura jerárquica y contiene valores anidados.
  • Utiliza llaves { } para almacenar objetos y corchetes [ ] para almacenar vectores.
  • Su información es escrita en pares llave/valor (key/value).

En JSON, la información conocida como objetos consiste en uno o mas pares de llaves/valores (key/value) contenidos dentro de llaves { }. La sintaxis de un objecto JSON incluye:

  • Las llaves deben ser cadenas de caracteres contenidas dentro de comillas ” “.
  • Los valores deben ser un tipo de información válida (cadena de caracteres, números, vectores, valores booleanos, carácter nulo, u otro objecto).
  • Las llaves y los valores son separados por dos puntos ( :).
  • Múltiples pares de llaves/valores dentro de un objeto se separan mediante comas.
  • El espacio en blanco no tiene relevancia.

En ocasiones una llave puede tener mas de un valor. Esto es conocido como un vector. Un vector en JSON es una lista ordenada de valores. Las características de un vector en JSON incluyen:

  • La llave debe ser seguida por dos puntos (:) y una lista de valores contenidos dentro de corchetes [ ].
  • Un vector en JSON es una lista ordenada de valores.
  • Un vector puede almacenar diferentes tipos de valores como caracteres, números, valores booleanos, objectos u otro vector.
  • Cada valor dentro del vector es separado por una coma.

Por ejemplo, una lista de direcciones IPv4 podría verse de la siguiente manera. La llave es “addresses”. Cada entrada de la lista es un objecto independiente, separado por llaves { }. Los objectos son dos pares de llaves/valores: una dirección IPv4 (“ip”) y una máscara de red (“netmask”) separados por una coma. El vector es una lista separa por una coma seguido de una llave de cierre

Lista de direcciones IPv4 en JSON

{
  "addresses": [
    {
      "ip": "172.16.0.2",
      "netmask": "255.255.255.0"
    },
    {
      "ip": "172.16.0.3",
      "netmask": "255.255.255.0"
    },
    {
      "ip": "172.16.0.4",
      "netmask": "255.255.255.0"
    }
  ]
}

7. Formato de Datos YAML

YAML es otro tipo de formato usado por aplicaciones para almacenar, transferir y leer información, el cual es legible por humanos. Algunas de las características de YAML incluyen:

  • Es considerado una versión mejorada de JSON.
  • Tiene un formato minimalista, lo cual lo hace fácil de leer y escribir.
  • Utiliza la sangría para definir su estructura, sin utilizar corchetes o comas.

Por ejemplo, observa la siguiente información en formato JSON, relacionada a la interfaz Gigabit Ethernet 2.

JSON para GigabitEthernet2

{
   "ietf-interfaces:interface": {
      "name": "GigabitEthernet2",
      "description": "Wide Area Network",
      "enabled": true,
      "ietf-ip:ipv4": {
         "address": [
            {
               "ip": "172.16.0.2",
               "netmask": "255.255.255.0"
            },
            {
               "ip": "172.16.0.3",
               "netmask": "255.255.255.0"
            },
            {
               "ip": "172.16.0.4",
               "netmask": "255.255.255.0"
            }
         ]
      }
   }
}

La misma información en formato YAML es más fácil de leer. Similar a JSON, un objeto en YAML se compone de uno o más pares de llaves/valores. Las llaves y los valores, son separados por medio de dos puntos sin el uso de comillas. En YAML, un guión es usado para separar cada elemento de una lista. Esto se muestra para las tres direcciones IPv4 en la siguiente salida.

YAML para GigabitEthernet2

ietf-interfaces:interface:
  name: GigabitEthernet2
  description: Wide Area Network
  enabled: true
  ietf-ip:ipv4:
    address:
    - ip: 172.16.0.2
      netmask: 255.255.255.0
    - ip: 172.16.0.3
      netmask: 255.255.255.0
    - ip: 172.16.0.4
      netmask: 255.255.255.0

8. Formato de Datos XML

XML es un formato más que legible para humanos, y se utiliza para almacenar, transferir y leer información desde aplicaciones. Algunas de las características de XML incluyen:

  • Es similar a HTML, el cual es el lenguaje de marcado generalizado para la creación de páginas y aplicaciones web.
  • Es auto-descriptivo. Contiene información dentro de un conjunto de etiquetas: <tag>data</tag>
  • A diferencia de HTML, XML no utiliza etiquetas predefinidas, ni una estructura de documento.

Los objectos XML se componen de uno o más pares de llave/valor (key/value), en los cuales la etiqueta inicial funciona como llave: <key>value</key>

El siguiente ejemplo muestra la misma información de GigabitEthernet2 en formato XML. Observa cómo los valores están contenidos dentro de las etiquetas de objeto. En este ejemplo, cada par de llaves/valores está en una línea separada y en algunas se utiliza sangría. Esto último no es requerido, pero se utiliza para mejorar la lectura. La lista utiliza instancias repetitivas de las etiquetas <tag></tag> para cada elemento de la lista. Los elementos dentro de estas instancias representan uno o más pares de llaves/valores (key/value).

XML para GigabitEthernet2

<?xml version="1.0" encoding="UTF-8" ?>
<ietf-interfaces:interface>
  <name>GigabitEthernet2</name>
  <description>Wide Area Network</description>
  <enabled>true</enabled>
  <ietf-ip:ipv4>
    <address>
      <ip>172.16.0.2</ip>
      <netmask>255.255.255.0</netmask>
    </address>
    <address>
      <ip>172.16.0.3</ip>
      <netmask>255.255.255.0</netmask>
    </address>
    <address>
      <ip>172.16.0.4</ip>
      <netmask>255.255.255.0</netmask>
    </address>
  </ietf-ip:ipv4>
</ietf-interfaces:interface>

Glosario: Si tienes dudas con algún término especial, puedes consultar este diccionario de redes informáticas.

¡Listo! Sigue visitando nuestro blog de curso de redes, dale Me Gusta a nuestra fanpage; y encontrarás más herramientas y conceptos que te convertirán en todo un profesional de redes.

Application Programming Interface CCNA
Anterior
API