Pega el Scala a la izquierda y dale a "Convertir" — te lo pasamos a JSONPega tu código Scala

Qué hace esta herramienta

Si tienes un case class de Scala con una docena de campos y necesitas el payload JSON que le corresponde — para un test, una llamada a una API, un fixture de mensaje Kafka — armarlo a mano cansa rápido. Pega el Scala aquí y recibes JSON válido. Un solo case class, un fichero entero lleno de ellos, o una instancia construida con argumentos nombrados — el mismo flujo, el mismo resultado.

El convertidor imita lo que producen las librerías JSON habituales de Scala. Circe, Play JSON y uPickle serializan un case class convirtiendo sus campos en claves JSON — eso es exactamente lo que sale aquí. Int, Long, Double y BigDecimal se vuelven números JSON. Boolean sigue siendo un booleano. Option[A] es el valor cuando es Some(x), o null / se omite cuando es None. Instant, LocalDateTime y los tipos java.time salen como cadenas ISO-8601.

Las colecciones siguen el mapeo obvio. List, Seq, Vector y Set se convierten en arrays JSON. Map[String, A] se vuelve un objeto JSON. Las tuplas pasan a ser arrays JSON con valores mixtos. Si pegas un sealed trait con hijos case class (un ADT), cada variante se serializa con su propia forma, y el parser reconoce el patrón discriminador de ADT que usan la mayoría de librerías. Pega varias clases de nivel superior desde un mismo fichero (mira el repo de Scala si buscas inspiración) y cada una sale como su propia entrada JSON.

Cómo se usa

Tres pasos. Funciona igual para un case class suelto que para un fichero entero de modelos.

1

Pega tu Scala (o prueba con el ejemplo)

Suelta tu Scala tal cual en el editor de la izquierda. Un case class, una jerarquía de sealed trait, una instancia o varias clases — todo vale. Dale a Cargar ejemplo si prefieres ver un caso realista primero.

Deja los imports, la declaración de package y las anotaciones. El parser ignora lo que no sea dato. Para detalles del lenguaje, docs.scala-lang.org es la referencia oficial.

2

Dale a Convertir

Pulsa el botón verde Convertir. La herramienta lee el Scala, recorre cada clase y campo, y produce JSON en una sola pasada. Verás un indicador de carga breve mientras trabaja.

3

Copia el JSON

El panel derecho se rellena con JSON indentado. Lánzalo a un spec de ScalaTest, a una respuesta mock de Akka HTTP, a un fixture de Play o a la documentación de tu API.

Cuándo viene bien de verdad

Fixtures de ScalaTest

Necesitas un body JSON para stubbear un cliente HTTP en un test de un servicio Scala. Pega el case class, obtén el payload, pégalo en tu spec.

Payloads HTTP con Akka / Play

Pasa un case class al JSON que harías POST contra tu propio servicio. Útil para pruebas rápidas con curl cuando estás cableando un endpoint nuevo.

Mensajes de ejemplo para Kafka

Genera mensajes JSON de ejemplo para un topic de Kafka nuevo directamente desde los case classes del dominio — sin ejemplos a mano que se desincronizan con el tiempo.

Documentación que refleja el código

Produce ejemplos JSON para la documentación de la API directamente desde los case classes reales, para que los docs sigan siendo fieles al código cuando los modelos evolucionen.

Preguntas habituales

¿Cómo se serializan los valores Option?

Some(x) se convierte en el valor x; None se vuelve null en JSON. Coincide con el comportamiento por defecto de Circe. Si prefieres omitir las claves para None, puedes eliminarlas a posteriori — el valor por defecto mantiene la forma predecible.

¿Y con sealed traits y ADTs?

Los sealed traits con hijos case class se serializan por variante. Cuando varias variantes comparten un trait padre se aplica el patrón discriminador habitual ({"type": "OrderPlaced", ...}) que usan Circe y Play JSON, para que puedas hacer round-trip del JSON de vuelta al ADT.

¿Cómo trata los tipos java.time?

Instant, LocalDate, LocalDateTime y ZonedDateTime se serializan como cadenas ISO-8601. Es la convención que comparten Circe, Play JSON y uPickle, y hace round-trip limpio de vuelta a java.time.

¿Maneja Map, List, Vector y Set?

Sí. List, Seq, Vector y Set se convierten en arrays JSON. Map[String, A] se vuelve un objeto JSON — los maps con claves que no son string (Map[Int, A]) se emiten como arrays de pares clave/valor, ya que JSON solo admite claves string.

¿Puedo pegar un fichero entero con varios case classes?

Sí. Cada clase de nivel superior se convierte en su propia entrada JSON, con las instancias anidadas expandidas. Los companion objects, las conversiones implícitas y los métodos auxiliares se ignoran — solo los datos llegan a la salida.

¿Guardáis mi código?

Tu Scala se envía al backend para la conversión y no se guarda. No logueamos el payload. Si el código es sensible, échale un vistazo antes de pegarlo.

Otras herramientas que te pueden interesar

Scala a JSON es una pieza. Estas van bien con ella: