Escolhendo um formato
Compromissos.
Escolhendo um formato é uma aula grátis de Ruby Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Ruby Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ruby Academy inclui 4 aulas no total.
Três formatos, três finalidades
Agora você conhece JSON, CSV e YAML. Cada formato é mais adequado para situações diferentes. Escolher o formato certo mantém seus dados fáceis de produzir, armazenar e consumir.
- JSON para APIs e a web
- CSV para dados tabulares ou de planilhas
- YAML para configurações
puts ['JSON', 'CSV', 'YAML'].join(', ')Pontos fortes do JSON
JSON é compacto, tem suporte universal e corresponde a mapas e listas aninhados. Ele é o padrão de fato para APIs web e para a troca de dados entre serviços.
require 'json'
puts({ id: 1, items: [1, 2] }.to_json)Pontos fracos do JSON
JSON não tem comentários e é prolixo para edição manual. Vírgulas finais e aspas simples são inválidas, o que causa problemas para as pessoas em arquivos de configuração.
require 'json'
begin
JSON.parse('{"a":1,}')
rescue JSON::ParserError
puts 'trailing comma not allowed'
endPontos fortes do CSV
CSV é perfeito para dados simples e tabulares: linhas e colunas. Planilhas, exportações e importações em massa usam CSV, que também é extremamente compacto para tabelas grandes.
require 'csv'
puts(CSV.generate { |c| c << ['a', 'b']; c << [1, 2] })Pontos fracos do CSV
CSV não consegue representar dados aninhados ou hierárquicos. Ele não tem um sistema de tipos padrão, portanto tudo é uma cadeia de caracteres até ser convertido, e as variantes (separadores e uso de aspas) divergem.
require 'csv'
row = CSV.parse_line('5,true')
puts(row[0].class)
puts(row[1].class)Pontos fortes do YAML
YAML é o formato mais legível para humanos, aceita comentários e lida bem com aninhamento. Por isso, é ideal para arquivos de configuração que os desenvolvedores editam manualmente.
require 'yaml'
text = "# app config\nport: 8081"
puts(YAML.load(text)['port'])Pontos fracos do YAML
As regras de indentação do YAML são propensas a erros (um espaço indevido pode invalidá-lo), e o carregamento inseguro pode representar um risco de segurança. Ele também é mais lento para ser analisado do que JSON.
require 'yaml'
cfg = YAML.safe_load("port: 8081")
puts(cfg['port'])Comparação de aninhamento
JSON e YAML representam naturalmente a mesma estrutura aninhada; CSV não consegue fazer isso.
require 'json'
require 'yaml'
data = { 'user' => { 'name' => 'Ada', 'roles' => ['admin'] } }
puts(data.to_json)
puts(data.to_yaml)Legibilidade versus compactação
Compromisso: YAML é o mais legível, JSON é equilibrado e CSV é o mais compacto para tabelas. Escolha com base em quem será o principal consumidor: pessoas ou máquinas.
require 'json'
require 'yaml'
h = { 'a' => 1, 'b' => 2 }
puts("JSON len: #{h.to_json.length}")
puts("YAML len: #{h.to_yaml.length}")Um guia para decidir
Regras rápidas:
- Você está se comunicando com uma API web? JSON
- Está exportando linhas para uma planilha? CSV
- São configurações do aplicativo que uma pessoa editará? YAML
Em caso de dúvida, JSON é a opção padrão mais segura para intercâmbio.
choice = { api: 'JSON', table: 'CSV', config: 'YAML' }
puts(choice[:config])Conversão entre formatos
Como os três formatos são analisados nas mesmas estruturas de mapas e listas do Ruby, a conversão é simples: analise um formato e serialize outro.
require 'json'
require 'yaml'
data = JSON.parse('{"port":8081,"name":"app"}')
puts(data.to_yaml)Verificação rápida
Qual formato é a melhor opção padrão para um arquivo de configuração que os desenvolvedores editam manualmente e no qual desejam usar comentários?
Recapitulação: escolhendo um formato
Agora você pode escolher a ferramenta certa:
- JSON: APIs, intercâmbio, equilíbrio
- CSV: tabelas simples, planilhas, compactação
- YAML: configuração, legibilidade, comentários, aninhamento
- Todos são analisados nas mesmas estruturas do Ruby, portanto a conversão é fácil
require 'yaml'
require 'json'
puts(YAML.load('a: 1').to_json)Perguntas Frequentes
A aula “Escolhendo um formato” é grátis?
Sim — o texto completo de “Escolhendo um formato” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Ruby Academy, atualize para CoddyKit PRO. O curso de Ruby Academy inclui 4 aulas no total.
O que vou aprender em “Escolhendo um formato”?
Compromissos. Você pratica Ruby Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Ruby Academy?
Nenhuma experiência prévia é necessária. Ruby Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Escolhendo um formato”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Ruby Academy?
Sim. Cada aula de Ruby Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Lendo e escrevendo JSON
- Trabalhando com CSV
- Configuração em YAML
- Escolhendo um formato