Conversor Ruby para JSON
Cola classes, hashes ou objetos Ruby. Recebe JSON limpo.
O que essa ferramenta faz
Se você tem uma classe Ruby com um monte de atributos e precisa de um payload JSON para um teste, uma chamada de API ou uma fixture, montar o hash na mão é uma chatice. Cola o Ruby aqui e recebe de volta JSON válido com cada campo preservado. Seja uma única classe Order, um Customer aninhado com endereços, ou um arquivo inteiro de definições de modelos do Rails, a saída bate com o que você teria chamando to_json em runtime.
O conversor entende como o Ruby serializa de verdade. A stdlib json vira chaves :symbol em strings (porque JSON só tem chaves string), nil vira null, e Time / Date saem como strings ISO-8601. Hashes com chaves símbolo e chaves string são ambos normalizados, e arrays de tipos mistos ficam intactos. Instâncias aninhadas — um Address dentro de um Order — viram objetos JSON aninhados, não são stringificadas. Os detalhes estão no ruby-doc.org.
Cola um arquivo inteiro de uma gem ou do seu app Rails e cada classe de nível superior sai como uma entrada JSON própria, com as variáveis de instância setadas no initialize puxadas para a saída. attr_accessor, attr_reader e @ivars crus são todos detectados. Se o parser vê um Struct ou um OpenStruct, trata os membros da mesma forma. Métodos são pulados — só dado chega ao JSON.
Como usar
Três passos. Funciona igual se você cola umas linhas ou uma pasta models/ inteira.
Cola seu Ruby (ou testa o exemplo)
Joga o Ruby no editor da esquerda do jeito que está. Uma definição de classe, um hash literal, várias classes ou uma instância .new — tudo serve. Clica em Carregar exemplo se quiser ver um caso realista antes.
Não precisa cortar o código — deixa a sintaxe Ruby, os require e os comentários como estão. O parser ignora o que não é dado. Para casos de borda, a doc da stdlib JSON é uma boa leitura.
Aperta Converter
Clica no botão verde Converter. A ferramenta lê o Ruby, preserva cada classe e atributo, e produz o JSON numa passada só. Vai aparecer um indicador curto de carregamento enquanto roda.
Copia o JSON
O painel da direita enche com JSON indentado e em conformidade com a spec. Copia para uma requisição do Postman, uma fixture de teste, um arquivo seeds do Rails ou a doc da sua API.
Quando isso realmente salva
Fixtures de teste para RSpec
Você tem um modelo Order com 20 atributos e precisa de JSON para mockar um serviço externo. Cola a classe, pega o payload, joga no seu spec.
Seeding de um app Rails
Transforma um punhado de linhas <code>Product.new(...)</code> num arquivo JSON de seed para db/seeds ou um loader de dados de staging — sem digitar à mão.
Doc que combina com seus modelos
Gera exemplos JSON para um README ou referência de API direto das suas classes Ruby, assim a doc nunca descola do código.
Depurar problemas de serialização
Quando o <code>to_json</code> começa a se comportar de um jeito estranho, cola o Ruby aqui para ver o formato JSON esperado e comparar com o que seu app está mandando de verdade.
Perguntas frequentes
Posso colar várias classes de uma vez?
Pode. Cola um arquivo inteiro. Cada classe de nível superior sai como sua própria entrada JSON, com as classes aninhadas expandidas em objetos aninhados. Métodos são ignorados — só variáveis de instância e seus valores acabam na saída.
Como são tratados símbolos e chaves string?
JSON só tem chaves string, então :name vira "name" — mesmo comportamento da stdlib json. Se você tem um hash misturando chaves símbolo e chaves string, as duas são normalizadas para string na saída.
E Time, Date e BigDecimal?
Time e DateTime saem como strings ISO-8601. Date é uma string de data ISO. BigDecimal vira número JSON. nil é null. Ranges e regex são stringificados — o resto dos tipos padrão mapeia do jeito que o to_json padrão do Ruby faz.
Lida com Struct e OpenStruct?
Sim. Um Struct com membros :name, :price é serializado como um objeto JSON com essas chaves. Mesma coisa para OpenStruct — os atributos dinâmicos são pegos e emitidos.
Meu código fica armazenado?
Seu Ruby é mandado para o backend para conversão e não é persistido — a gente não loga o payload. Como sempre com ferramentas online, se o código for realmente sensível, dá uma olhada nele antes.
E se o código tiver métodos ou blocks?
Métodos e blocks são pulados — não são dados. Só o nome da classe, as variáveis de instância do initialize e os valores literais chegam ao JSON, então o resto do seu modelo passa limpo.
Outras ferramentas que podem servir
Ruby para JSON é uma peça. Essas combinam bem com ela: