Convertitore da Scala a JSON
Incolla le tue case class o oggetti Scala. Riprenditi JSON pulito.
Cosa fa questo tool
Se hai una case class Scala con una dozzina di campi e ti serve il payload JSON corrispondente — per un test, una chiamata API, una fixture di messaggio Kafka — farlo a mano stanca in fretta. Incolla lo Scala qui e riprendi JSON valido. Una sola case class, un file intero pieno di esse, o un'istanza costruita con argomenti nominati — stesso flusso, stesso risultato.
Il convertitore rispecchia quello che producono le librerie JSON Scala più comuni. Circe, Play JSON e uPickle serializzano una case class trasformando i suoi campi in chiavi JSON — è esattamente quello che ottieni qui. Int, Long, Double e BigDecimal diventano numeri JSON. Boolean resta booleano. Option[A] diventa il valore quando è Some(x), o null / viene omesso quando è None. Instant, LocalDateTime e i tipi java.time escono come stringhe ISO-8601.
Le collection seguono il mapping più ovvio. List, Seq, Vector e Set diventano tutti array JSON. Map[String, A] diventa un oggetto JSON. Le tuple diventano array JSON con valori misti. Se incolli un sealed trait con figli case class (un ADT), ogni variante si serializza con la sua forma, e il parser riconosce il pattern discriminator ADT usato dalle librerie più diffuse. Incolla più classi di primo livello dallo stesso file (guarda la repo di Scala per ispirazione) e ognuna esce come propria entry JSON.
Come si usa
Tre passaggi. Funziona uguale per una singola case class o per un intero file di modelli.
Incolla il tuo Scala (o prova l'esempio)
Butta il tuo Scala così com'è nell'editor a sinistra. Una case class, una gerarchia di sealed trait, un'istanza o più classi — va tutto bene. Clicca Carica esempio se preferisci vedere prima un caso realistico.
Tieni pure i tuoi import, le dichiarazioni di package e le annotation. Il parser ignora quello che non è dato. Per i dettagli del linguaggio, docs.scala-lang.org è il riferimento ufficiale.
Clicca Converti
Premi il bottone verde Converti. Il tool legge lo Scala, attraversa ogni classe e ogni campo, e produce JSON in una passata. Un breve indicatore di caricamento compare mentre elabora.
Copia il JSON
Il pannello di destra si riempie con JSON indentato. Ficcalo dentro uno spec ScalaTest, una risposta mock Akka HTTP, una fixture Play, o la doc della tua API.
Quando serve davvero
Fixture ScalaTest
Ti serve un body JSON per fare stub di un client HTTP in un test di un servizio Scala. Incolla la case class, prendi il payload, mettilo nello spec.
Payload HTTP Akka / Play
Trasforma una case class nel JSON che faresti POST al tuo servizio. Comodo per test veloci via curl quando stai cablando un endpoint nuovo.
Campioni di messaggi Kafka
Genera messaggi JSON di esempio per un nuovo topic Kafka direttamente dalle case class del tuo dominio — niente esempi scritti a mano che scollegano col tempo.
Documentazione allineata al codice
Produci esempi JSON per la documentazione dell'API direttamente dalle tue vere case class, così la doc resta accurata mentre i modelli evolvono.
Domande frequenti
Come vengono serializzati i valori Option?
Some(x) diventa il valore x; None diventa JSON null. Corrisponde al comportamento di default di Circe. Se preferisci che le chiavi per None siano omesse, puoi toglierle dopo — il default sicuro mantiene la forma prevedibile.
E sealed trait e ADT?
I sealed trait con figli case class si serializzano per variante. Il pattern discriminator comune ({"type": "OrderPlaced", ...}) usato da Circe e Play JSON viene applicato quando più varianti condividono un trait padre, così puoi fare round-trip dei dati di nuovo nell'ADT.
Come gestisce i tipi java.time?
Instant, LocalDate, LocalDateTime e ZonedDateTime vengono serializzati in stringhe ISO-8601. È la convenzione condivisa da Circe, Play JSON e uPickle, e fa round-trip pulito verso java.time.
Gestisce Map, List, Vector, Set?
Sì. List, Seq, Vector e Set diventano tutti array JSON. Map[String, A] diventa un oggetto JSON — le map con chiavi non-string (Map[Int, A]) vengono emesse come array di coppie chiave/valore, dato che JSON supporta solo chiavi string.
Posso incollare un intero file con più case class?
Sì. Ogni classe di primo livello diventa la propria entry JSON, con le istanze annidate espanse. Companion object, conversioni implicite e metodi di supporto vengono saltati — solo i dati finiscono in output.
Il mio codice viene salvato?
Il tuo Scala viene mandato al backend per la conversione e non viene persistito. Non logghiamo il payload. Se il codice è sensibile, dacci un'occhiata prima di incollare.
Altri tool che potrebbero servirti
Scala a JSON è un pezzo. Questi si abbinano bene: