Converter JSON para Ruby Online
Converta JSON para Ruby Hash, Struct ou OpenStruct. Gratuito, direto no navegador, sem envio de arquivos.
{
name: "John",
age: 30,
active: true,
tags: [
"ruby",
"rails"
],
address: {
city: "Tokyo",
zip: "100-0001"
}
}O que você pode fazer
Converta JSON para estruturas de dados Ruby
Três tipos de saída
Escolha entre Hash, Struct ou OpenStruct conforme a necessidade do seu projeto Ruby.
100% privado
A conversão acontece no seu navegador. Nenhum dado de código é enviado a servidores.
Tipos preservados
String, Integer, Float, Boolean, nil e Array mapeados corretamente para tipos Ruby nativos.
Conversão instantânea
Sem fila de servidor. O código Ruby é gerado imediatamente no seu navegador.
Como funciona
Três passos, sem complicação
Cole ou carregue o JSON
Cole o JSON diretamente na caixa de texto ou carregue um arquivo .json. Sem cadastro.
Escolha o tipo Ruby de destino
Selecione Hash para dicionário flexível, Struct para tipo com schema fixo, ou OpenStruct para acesso por atributos dinâmicos.
Copie ou baixe o Ruby gerado
Copie o código Ruby com um clique ou baixe como arquivo .rb pronto para usar no seu projeto.
Perguntas frequentes
Ficou com dúvidas?
Os três são estruturas de dados para armazenar pares chave-valor em Ruby, mas com trade-offs distintos. O Hash ({chave: valor}) é o mais flexível: aceita qualquer objeto como chave, permite adicionar ou remover pares em tempo de execução e não tem schema fixo. Acesso por símbolo: hash[:nome]. O Struct (Struct.new(:nome, :idade)) cria uma classe com atributos fixos definidos em tempo de definição, com acesso por método (struct.nome), menor uso de memória que Hash equivalente e possibilidade de adicionar métodos personalizados. O OpenStruct (require 'ostruct') permite adicionar atributos dinamicamente como o Hash, mas com sintaxe de acesso por método como o Struct (ostruct.nome), ao custo de ser mais lento e usar mais memória por usar um Hash interno. Para APIs e dados externos, Hash é o mais comum; para modelos de domínio com schema estável, Struct é mais eficiente.
Sim. A conversão mapeia os tipos JSON para tipos Ruby nativos: strings JSON tornam-se String Ruby, números inteiros tornam-se Integer, números com ponto flutuante tornam-se Float, booleanos tornam-se true/false, null torna-se nil, arrays JSON tornam-se Array Ruby, e objetos JSON tornam-se Hash com chaves Symbol (: prefixo) por padrão. Chaves JSON que não são identificadores Ruby válidos (com espaços, hífens ou que começam com números) são representadas como strings entre aspas em vez de símbolos.
Em Ruby, a biblioteca json da stdlib faz a serialização: require 'json'; hash.to_json retorna uma string JSON. Para objetos mais complexos com tipos personalizados, você pode implementar o método as_json ou to_json na sua classe. A gem ActiveSupport do Rails adiciona o método as_json em todos os objetos, permitindo controlar quais atributos são serializados com as opções :only, :except e :methods.
Use Struct quando você sabe com antecedência quais campos o objeto terá e esses campos são estáveis: por exemplo, para representar a resposta de uma API com schema documentado. O Struct tem vantagens: consome menos memória que um Hash equivalente (usa um array interno indexado em vez de tabela hash), tem acesso por método mais legível (usuario.nome em vez de usuario[:nome]), e pode incluir métodos personalizados como qualquer classe Ruby. A partir do Ruby 3.2, a keyword Data.define foi adicionada como alternativa imutável ao Struct para value objects: Data.define(:nome, :email) cria um tipo imutável ideal para representar registros de dados externos como respostas de APIs.
Sim. A conversão processa recursivamente todos os níveis de aninhamento do JSON: objetos aninhados tornam-se Hashes aninhados (ou Structs aninhados se selecionado), arrays de objetos tornam-se Arrays de Hashes, e qualquer combinação de tipos primitivos e compostos é preservada com fidelidade. A profundidade máxima suportada é limitada apenas pela capacidade de memória disponível no navegador.
O OpenStruct é uma classe da biblioteca padrão do Ruby (ostruct) que cria objetos com atributos definidos dinamicamente. Ao contrário do Struct, não é necessário declarar os atributos com antecedência: basta atribuir os valores e os métodos getter/setter são criados automaticamente. É útil para prototipagem rápida e para scripts onde você quer acessar dados JSON com sintaxe de ponto (objeto.atributo) sem definir uma classe completa. A desvantagem é a performance: o OpenStruct é significativamente mais lento que Hash e Struct para criação e acesso a atributos, pois internamente usa um Hash e define métodos via method_missing. Para código de produção em aplicações Rails, prefira Struct ou classes PORO (Plain Old Ruby Objects).
JSON para Ruby: Hash, Struct e OpenStruct explicados
A conversão de JSON para Ruby é uma operação cotidiana no desenvolvimento web com Rails e outras frameworks Ruby. O JSON (JavaScript Object Notation), padronizado como ECMA-404 e RFC 8259, é o formato de troca de dados mais usado em APIs REST, e o Ruby tem suporte nativo ao JSON desde a versão 1.9 através da biblioteca json da stdlib. O método JSON.parse(string) converte uma string JSON em uma hierarquia de objetos Ruby nativos: objetos JSON tornam-se Hash, arrays tornam-se Array, strings tornam-se String, números tornam-se Integer ou Float, e null torna-se nil.
Para aplicações Rails que consomem APIs externas, a escolha da estrutura de dados para representar as respostas JSON tem impacto em legibilidade, performance e maintainability. O Hash com chaves símbolo (:nome) é o padrão em Ruby e Rails — ActiveRecord, por exemplo, usa HashWithIndifferentAccess que aceita tanto símbolos quanto strings como chaves. O Struct é preferido para modelos de domínio estáveis por combinar a eficiência de memória de um array indexado com a legibilidade de acesso por método. A partir do Ruby 3.2, Data.define serve como Struct imutável para value objects e DTOs (Data Transfer Objects), seguindo os princípios de design imutável cada vez mais adotados na comunidade Ruby.
Para serialização e deserialização JSON de alta performance em Rails, as gems mais usadas são Oj (Optimized JSON, by Peter Ohler), que usa uma extensão C e é tipicamente 2-10x mais rápida que a stdlib json, e Blueprinter e Panko para serialização de objetos ActiveRecord para JSON. Para validação de schema JSON em Ruby, a gem json_schemer implementa o JSON Schema Draft 4-7 e Draft 2019-09. Para gerar classes Ruby tipadas a partir de schemas JSON, a gem dry-struct em combinação com dry-types permite criar estruturas de dados tipadas com validação, uma abordagem mais robusta que OpenStruct para código de produção em aplicações grandes.