Plak Scala links en klik op "Converteren" — wij maken er JSON vanPlak je Scala-code

Wat deze tool doet

Als je een Scala-case class hebt met een stuk of twaalf velden en je moet de bijpassende JSON-payload hebben — voor een test, een API-call, een Kafka-message-fixture — dan wordt het handmatig bouwen snel saai. Plak de Scala hier en je krijgt geldige JSON terug. Eén case class, een bestand vol, of een volledige instance gebouwd met named arguments — zelfde flow, zelfde resultaat.

De converter matcht wat de gangbare Scala JSON-libraries produceren. Circe, Play JSON en uPickle serialiseren een case class door de velden in JSON-keys om te zetten — precies wat je hier krijgt. Int, Long, Double en BigDecimal worden JSON-getallen. Boolean blijft een boolean. Option[A] wordt de waarde bij Some(x), of null / wordt weggelaten bij None. Instant, LocalDateTime en de java.time-types komen eruit als ISO-8601-strings.

Collections volgen de voor de hand liggende mapping. List, Seq, Vector en Set worden JSON-arrays. Map[String, A] wordt een JSON-object. Tuples worden JSON-arrays met gemengde waarden. Plak je een sealed trait met case-class-kinderen (een ADT), dan serialiseert elke variant in zijn eigen vorm, en de parser herkent het ADT-discriminator-pattern dat de meeste libraries gebruiken. Plak meerdere top-level classes uit één bestand (kijk bij de Scala-repo voor inspiratie) en elk krijgt z'n eigen JSON-entry.

Hoe gebruik je het

Drie stappen. Werkt hetzelfde voor één case class of een heel modelbestand.

1

Plak je Scala (of probeer het voorbeeld)

Gooi je Scala zoals het is in de linker editor. Een case class, een sealed trait-hiërarchie, een instance of meerdere classes — allemaal prima. Klik op Voorbeeld laden als je eerst een realistisch voorbeeld wilt zien.

Laat je imports, package-declaraties en annotations gewoon staan. De parser negeert wat geen data is. Voor taaldetails is docs.scala-lang.org de officiële referentie.

2

Klik op Converteren

Druk op de groene Converteren-knop. De tool leest de Scala, loopt door elke class en elk veld, en produceert JSON in één pass. Een korte loading-indicator draait mee.

3

Kopieer de JSON

Het rechterpaneel vult zich met ingesprongen JSON. Zet het in een ScalaTest-spec, een gemockte Akka-HTTP-response, een Play-fixture, of je API-documentatie.

Wanneer dit echt handig is

ScalaTest-fixtures

Je hebt een JSON-body nodig om een HTTP-client te stubben in een Scala-servicetest. Plak de case class, pak de payload, zet 'm in je spec.

Akka-/Play-HTTP-payloads

Zet een case class om naar de JSON die je zelf naar je service zou POSTen. Handig voor snelle curl-tests als je een nieuw endpoint aansluit.

Kafka-message-samples

Genereer voorbeeld-JSON-messages voor een nieuw Kafka-topic rechtstreeks uit je domain-case-classes — geen met de hand geschreven voorbeelden die na verloop van tijd afwijken.

Docs die gelijk lopen met de code

Produceer JSON-voorbeelden voor API-documentatie direct uit je echte case classes, zodat de docs kloppen terwijl je modellen evolueren.

Veelgestelde vragen

Hoe worden Option-waarden geserialiseerd?

Some(x) wordt de waarde x; None wordt JSON null. Dat matcht het default-gedrag van Circe. Wil je liever weggelaten keys bij None, strip ze dan achteraf — de veilige default houdt de vorm voorspelbaar.

En sealed traits en ADTs?

Sealed traits met case-class-kinderen serialiseren per variant. Het gangbare discriminator-pattern ({"type": "OrderPlaced", ...}) dat Circe en Play JSON gebruiken wordt toegepast als meerdere varianten een parent-trait delen, zodat je de data weer terug round-trip in de ADT krijgt.

Hoe behandelt het java.time-types?

Instant, LocalDate, LocalDateTime en ZonedDateTime worden als ISO-8601-strings geserialiseerd. Dat is de conventie die Circe, Play JSON en uPickle delen, en het round-trip't schoon terug naar java.time.

Doet het Map, List, Vector, Set?

Jep. List, Seq, Vector en Set worden allemaal JSON-arrays. Map[String, A] wordt een JSON-object — maps met niet-string-keys (Map[Int, A]) komen eruit als arrays van key/value-pairs, want JSON ondersteunt alleen string-keys.

Kan ik een heel bestand met meerdere case classes plakken?

Ja. Elke top-level class wordt z'n eigen JSON-entry, met geneste instances uitgevouwen. Companion objects, implicit conversions en helper-methodes worden overgeslagen — alleen data komt in de output terecht.

Wordt mijn code opgeslagen?

Je Scala gaat naar de backend voor de conversie en wordt niet gepersisteerd. We loggen de payload niet. Is de code gevoelig, kijk er dan nog even doorheen voor je plakt.

Andere tools die je misschien kunt gebruiken

Scala naar JSON is één stukje. Deze passen er goed bij: