Conversor de Ruby a JSON
Pega clases, hashes u objetos de Ruby. Obtén JSON limpio.
Qué hace esta herramienta
Si tienes una clase de Ruby con un montón de atributos y necesitas un payload JSON para un test, una llamada a una API o un fixture, montar el hash a mano es un rollo. Pega el Ruby aquí y te devolvemos JSON válido con todos los campos intactos. Ya sea una sola clase Order, un Customer anidado con direcciones, o un archivo entero de modelos de Rails, la salida coincide con lo que te daría to_json en tiempo de ejecución.
El conversor entiende cómo serializa Ruby de verdad. La librería estándar json convierte claves :symbol en strings (porque JSON solo tiene claves string), nil pasa a null, y Time / Date salen como strings ISO-8601. Los hashes con claves símbolo y claves string se normalizan, y los arrays de tipos mixtos quedan intactos. Las instancias anidadas — una Address dentro de un Order — se expanden en objetos JSON anidados, no se convierten en string. Puedes leer los detalles en ruby-doc.org.
Pega un archivo completo de una gem o de tu app en Rails y cada clase de nivel superior sale como su propia entrada JSON, con las variables de instancia que setea initialize incluidas en la salida. attr_accessor, attr_reader y los @ivars sueltos se detectan todos. Si el parser ve un Struct o un OpenStruct, trata a los miembros igual. Los métodos se ignoran — en el JSON solo acaban los datos.
Cómo usarla
Tres pasos. Funciona igual si pegas unas líneas o una carpeta models/ entera.
Pega tu Ruby (o prueba el ejemplo)
Suelta tu Ruby en el editor izquierdo tal cual. Una definición de clase, un literal hash, varias clases o una instancia .new — todo vale. Haz clic en Cargar ejemplo si quieres ver un caso realista primero.
No hace falta que recortes el código — deja la sintaxis Ruby, los require y los comentarios como están. El parser ignora lo que no es dato. Para casos raros, los docs de la librería estándar JSON se leen bien.
Pulsa Convertir
Haz clic en el botón verde Convertir. La herramienta lee el Ruby, conserva cada clase y atributo, y genera el JSON en una pasada. Verás un indicador de carga corto mientras corre.
Copia el JSON
El panel derecho se llena con JSON indentado y conforme a la spec. Cópialo a una petición de Postman, a un fixture de test, a un archivo de seeds de Rails o a los docs de tu API.
Cuándo viene bien de verdad
Fixtures de test para RSpec
Tienes un modelo Order con 20 atributos y necesitas JSON para mockear un servicio externo. Pega la clase, pilla el payload, mételo en tu spec.
Seeding de una app Rails
Convierte un puñado de líneas <code>Product.new(...)</code> en un archivo JSON de seeds para db/seeds o un loader de datos de staging — sin escribir a mano.
Docs que encajan con tus modelos
Genera ejemplos JSON para un README o una referencia de API directamente desde tus clases Ruby, así los docs nunca se desincronizan del código.
Depurar problemas de serialización
Cuando <code>to_json</code> se pone raro, pega el Ruby aquí para ver la forma JSON esperada y compararla con lo que tu app está mandando en realidad.
Preguntas frecuentes
¿Puedo pegar varias clases a la vez?
Sí. Pega un archivo entero. Cada clase de nivel superior sale como su propia entrada JSON, con las clases anidadas expandidas en objetos anidados. Los métodos se ignoran — en la salida solo acaban las variables de instancia y sus valores.
¿Cómo se tratan los símbolos y las claves string?
JSON solo tiene claves string, así que :name pasa a "name" — mismo comportamiento que la librería estándar json. Si tienes un hash que mezcla claves símbolo y claves string, ambas se normalizan a string en la salida.
¿Qué pasa con Time, Date y BigDecimal?
Time y DateTime salen como strings ISO-8601. Date es una string de fecha ISO. BigDecimal pasa a número JSON. nil es null. Los ranges y las regex se convierten en string — el resto de tipos estándar se mapean igual que lo hace el to_json por defecto de Ruby.
¿Maneja Struct y OpenStruct?
Sí. Un Struct con miembros :name, :price se serializa como un objeto JSON con esas claves. Igual para OpenStruct — los atributos dinámicos se detectan y se emiten.
¿Se guarda mi código?
Tu Ruby se manda al backend para convertirlo y no se persiste — no logueamos el payload. Como siempre con herramientas online, si el código es realmente sensible, revísalo con ojo primero.
¿Y si el código tiene métodos o bloques?
Los métodos y los bloques se saltan — no son datos. En el JSON solo acaban el nombre de la clase, las variables de instancia del initialize y los valores literales, así que el resto de tu modelo sigue saliendo limpio.
Otras herramientas que te pueden servir
Ruby a JSON es una pieza. Estas combinan bien con ella: