DocumentosImagensMídiaFerramentas PDF

Converter JSON para Ruby Online

Converta JSON para Ruby Hash, Struct ou OpenStruct. Gratuito, direto no navegador, sem envio de arquivos.

Keys:
{
  name: "John",
  age: 30,
  active: true,
  tags: [
    "ruby",
    "rails"
  ],
  address: {
    city: "Tokyo",
    zip: "100-0001"
  }
}
Processed in your browser

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.

Três passos, sem complicação

1

Cole ou carregue o JSON

Cole o JSON diretamente na caixa de texto ou carregue um arquivo .json. Sem cadastro.

2

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.

3

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.

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.