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)
- Chaves sempre são strings — obrigatoriamente entre aspas duplas.
- Vírgula separa pares, mas não há vírgula após o último par do objeto ou array.
- White space é insignificante — espaços e quebras de linha não alteram o significado.
- Um objeto dentro de outro é chamado de objeto aninhado (nested object).
- 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:
- Identificar o tipo de dado de um valor em um bloco JSON (é string, number, boolean, array ou object?)
- Encontrar erros de sintaxe — vírgula extra, colchete faltando, aspas simples no lugar de duplas
- Contrastar os três formatos — identificar qual bloco de código está em JSON, XML ou YAML
- 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.