M7 · Automação e SDN

Formatos de Dados: JSON, XML e YAML

Módulo: M7 — Automação de Redes

Slug: /cursos/ccna/m7/formatos-dados-json-xml-yaml/

Nível: Iniciante

Tópico do exame: 6.7 — Interpretar dados codificados em JSON


O que é

Quando dois programas precisam trocar informações — um controlador SDN e um cliente, por exemplo — eles enfrentam um problema fundamental: cada linguagem de programação armazena dados de forma diferente. Python, Java e Go não falam o mesmo "dialeto" internamente.

Serialização de dados é o processo de converter esses dados para um formato padronizado e legível em texto, que qualquer aplicação consegue entender, transmitir e reconstruir. JSON, XML e YAML são os três formatos de serialização mais usados em redes.

O exame CCNA 200-301 cobra especificamente o tópico 6.7 — interpretar dados codificados em JSON. XML e YAML são contexto comparativo, mas aparecem em questões de contraste.


Como funciona

JSON — JavaScript Object Notation

JSON é o formato mais relevante para o CCNA. Padronizado na RFC 8259, é usado extensivamente por REST APIs — incluindo as APIs de controladores Cisco.

Tipos de dados em JSON

Tipo Categoria Exemplo Característica
string Primitivo "GigabitEthernet1/1" Sempre entre aspas duplas
number Primitivo 1000 Sem aspas
boolean Primitivo true / false Sem aspas, minúsculas
null Primitivo null Sem aspas, significa ausência de valor
object Estruturado { "chave": "valor" } Chaves {}, pares chave/valor
array Estruturado ["a", "b", "c"] Colchetes [], lista de valores

Regras críticas do JSON (caem no exame)

  1. Chaves sempre são strings — obrigatoriamente entre aspas duplas.
  2. Vírgula separa pares, mas não há vírgula após o último par do objeto ou array.
  3. White space é insignificante — espaços e quebras de linha não alteram o significado.
  4. Um objeto dentro de outro é chamado de objeto aninhado (nested object).
  5. Object = também chamado de dictionary na documentação.

Exemplo de objeto JSON completo

{
  "interface": "GigabitEthernet1/1",
  "is_up": true,
  "ip_address": "192.168.1.1",
  "mask": "255.255.255.0",
  "speed_mbps": 1000
}
  • "interface" → string (aspas duplas)
  • "is_up" → chave; true → boolean (sem aspas)
  • "speed_mbps" → chave; 1000 → number (sem aspas)
  • Sem vírgula após o último par ("speed_mbps": 1000)

Arrays em JSON

{
  "interfaces": ["GigabitEthernet1/1", "GigabitEthernet1/2", "Loopback0"],
  "vlans": [10, 20, 30]
}

O valor de "interfaces" é um array — identificado pelos colchetes [].


XML — eXtensible Markup Language

XML foi desenvolvido como linguagem de marcação (como HTML) e depois adotado para serialização de dados. O NETCONF usa XML nativamente, e o IOS da Cisco suporta saída de comandos em XML.

Estrutura de XML

Cada variável é representada por uma tag de abertura e uma tag de fechamento, com o valor no meio:

<chave>valor</chave>

Comando IOS para saída em XML

show ip interface brief | format

Características do XML

  • White space é insignificante (como JSON)
  • Mais verboso que JSON e YAML
  • Considerado menos legível que JSON por humanos
  • Ainda muito usado em NETCONF/RESTCONF com modelos YANG

YAML — YAML Ain't Markup Language

YAML é o formato usado pelo Ansible — a principal ferramenta de automação de redes baseada em agente. É o mais legível dos três para humanos, mas exige atenção especial à formatação.

Características únicas do YAML

  • White space é significante — indentação define a hierarquia (diferente de JSON e XML)
  • Arquivos começam com ---
  • Listas usam hífen: - item
  • Pares chave/valor: chave: valor (sem aspas na maioria dos casos)

Na prática

O mesmo dado nos três formatos

Imagine que você precisa representar as informações de uma interface de rede com os campos: nome da interface, status, endereço IP, máscara e velocidade.

Em JSON:

{
  "interface": "GigabitEthernet1/1",
  "status": "up",
  "ip_address": "192.168.1.1",
  "mask": "255.255.255.0",
  "speed_mbps": 1000
}

Em XML:

<interface>
  <name>GigabitEthernet1/1</name>
  <status>up</status>
  <ip_address>192.168.1.1</ip_address>
  <mask>255.255.255.0</mask>
  <speed_mbps>1000</speed_mbps>
</interface>

Em YAML:

---
interface:
  name: GigabitEthernet1/1
  status: up
  ip_address: 192.168.1.1
  mask: 255.255.255.0
  speed_mbps: 1000

Quando usar cada formato

Situação Formato recomendado Motivo
REST APIs modernas JSON Leve, suporte universal, padrão do setor
NETCONF XML Protocolo exige XML nativamente
RESTCONF JSON ou XML Suporta ambos
Playbooks Ansible YAML Requisito da ferramenta
Arquivos de configuração simples YAML Alta legibilidade humana
Modelos YANG JSON ou XML Depende do protocolo (RESTCONF/NETCONF)

Erros comuns de sintaxe JSON que caem no exame

// ERRO: vírgula após o último par
{
  "interface": "Gi1/1",
  "status": "up",   ← vírgula extra aqui = inválido
}

// ERRO: aspas simples em vez de duplas
{
  'interface': 'Gi1/1'  ← inválido, JSON exige aspas duplas
}

// ERRO: vírgula faltando em array
{
  "interfaces": ["Gi1/1" "Gi1/2"]  ← falta vírgula entre os valores
}

// CORRETO:
{
  "interface": "Gi1/1",
  "status": "up"
}

Por que cai no exame

O tópico 6.7 do CCNA exige que você consiga ler e interpretar dados em JSON. As questões costumam:

  1. Identificar o tipo de dado de um valor em um bloco JSON (é string, number, boolean, array ou object?)
  2. Encontrar erros de sintaxe — vírgula extra, colchete faltando, aspas simples no lugar de duplas
  3. Contrastar os três formatos — identificar qual bloco de código está em JSON, XML ou YAML
  4. Identificar quando white space é significante — resposta: apenas no YAML

A confusão mais comum é entre "true" (string) e true (boolean). Se estiver entre aspas duplas, é sempre string, independente do conteúdo.

Em 2026, o contexto de automação de redes expandiu: YANG define modelos de dados que são transportados via NETCONF (XML) e RESTCONF (JSON ou XML), tornando o entendimento desses formatos ainda mais relevante na prática.


Resumo em uma linha

JSON usa chaves/colchetes e é o padrão de REST APIs; XML usa tags HTML-like e é nativo do NETCONF; YAML usa indentação obrigatória e é o formato do Ansible — os três serializam dados para que aplicações diferentes se comuniquem.