Conversor de Scala para JSON
Cola suas case classes ou objetos Scala. Recebe JSON limpo de volta.
O que essa ferramenta faz
Se você tem uma case class Scala com uma dúzia de campos e precisa do payload JSON correspondente — para um teste, uma chamada de API, um fixture de mensagem Kafka — montar na mão cansa rápido. Cola o Scala aqui e recebe JSON válido. Uma case class, um arquivo inteiro delas, ou uma instância construída com argumentos nomeados — mesmo fluxo, mesmo resultado.
O conversor acompanha o que as libs JSON comuns de Scala produzem. Circe, Play JSON e uPickle serializam uma case class transformando os campos em chaves JSON — é exatamente isso que você recebe aqui. Int, Long, Double e BigDecimal viram números JSON. Boolean continua boolean. Option[A] vira o valor quando é Some(x), ou null / é omitido quando é None. Instant, LocalDateTime e os tipos java.time saem como strings ISO-8601.
As coleções seguem o mapeamento óbvio. List, Seq, Vector e Set viram arrays JSON. Map[String, A] vira um objeto JSON. As tuplas viram arrays JSON de valores mistos. Se você cola um sealed trait com filhos case class (um ADT), cada variante é serializada com sua própria forma, e o parser identifica o padrão de discriminador de ADT usado pela maioria das libs. Cola várias classes de nível superior de um arquivo só (dá uma olhada no repositório do Scala para inspiração) e cada uma sai como sua própria entrada JSON.
Como usar
Três passos. Funciona igual para uma case class solta ou um arquivo inteiro de modelos.
Cola seu Scala (ou testa com o exemplo)
Joga seu Scala como está no editor da esquerda. Uma case class, uma hierarquia de sealed trait, uma instância ou várias classes — tudo funciona. Clica em Carregar exemplo se quiser ver um caso realista primeiro.
Deixa seus imports, declaração de package e anotações. O parser ignora o que não for dado. Para detalhes da linguagem, docs.scala-lang.org é a referência oficial.
Clica em Converter
Aperta o botão verde Converter. A ferramenta lê o Scala, percorre cada classe e campo, e produz JSON em uma única passada. Um indicador de carregamento aparece rapidinho enquanto roda.
Copia o JSON
O painel à direita preenche com JSON indentado. Joga num spec de ScalaTest, numa resposta mock de Akka HTTP, num fixture de Play, ou na documentação da sua API.
Quando isso realmente ajuda
Fixtures de ScalaTest
Você precisa de um body JSON para stubar um cliente HTTP num teste de serviço Scala. Cola a case class, pega o payload, joga no seu spec.
Payloads HTTP de Akka / Play
Transforma uma case class no JSON que você faria POST no seu próprio serviço. Útil para testes rápidos com curl quando está ligando um endpoint novo.
Amostras de mensagem Kafka
Gera mensagens JSON de exemplo para um tópico Kafka novo direto das suas case classes de domínio — sem exemplos escritos à mão que desandam com o tempo.
Docs que batem com o código
Produz exemplos JSON para a documentação da API direto das case classes reais, para a doc ficar fiel ao código à medida que os modelos evoluem.
Perguntas comuns
Como os valores Option são serializados?
Some(x) vira o valor x; None vira null em JSON. É o comportamento padrão do Circe. Se você prefere chaves omitidas para None, dá para tirar depois — o padrão seguro mantém a forma previsível.
E sealed traits e ADTs?
Sealed traits com filhos case class serializam por variante. O padrão comum de discriminador ({"type": "OrderPlaced", ...}) usado por Circe e Play JSON é aplicado quando várias variantes compartilham o trait pai, então você consegue fazer round-trip dos dados de volta para o ADT.
Como lida com os tipos java.time?
Instant, LocalDate, LocalDateTime e ZonedDateTime são serializados em strings ISO-8601. É a convenção compartilhada por Circe, Play JSON e uPickle, e faz round-trip limpo de volta para java.time.
Ele lida com Map, List, Vector, Set?
Sim. List, Seq, Vector e Set viram arrays JSON. Map[String, A] vira um objeto JSON — maps com chaves que não são string (Map[Int, A]) saem como arrays de pares chave/valor, já que JSON só aceita chaves string.
Dá para colar um arquivo inteiro com várias case classes?
Dá. Cada classe de nível superior vira sua própria entrada JSON, com as instâncias aninhadas expandidas. Companion objects, conversões implícitas e métodos auxiliares são pulados — só dado chega na saída.
Meu código é guardado?
Seu Scala é enviado para o backend para a conversão e não é persistido. A gente não loga o payload. Se o código for sensível, dá uma olhada nele antes de colar.
Outras ferramentas que podem servir
Scala para JSON é só uma peça. Estas combinam bem: