Scala til JSON-konverter
Indsæt dine Scala case classes eller objekter. Få ren JSON tilbage.
Hvad værktøjet gør
Har du en Scala-case class med en halv snes felter, og skal du bruge den matchende JSON-payload — til en test, et API-kald, en Kafka-message-fixture — bliver det hurtigt kedeligt at bygge i hånden. Indsæt Scalaen her og få gyldig JSON tilbage. En enkelt case class, en hel fil fuld af dem, eller en færdig instans bygget med named arguments — samme flow, samme resultat.
Konverteren følger det, almindelige Scala JSON-biblioteker producerer. Circe, Play JSON og uPickle serialiserer en case class ved at lave felterne om til JSON-nøgler — præcis det, du får her. Int, Long, Double og BigDecimal bliver til JSON-tal. Boolean bliver stadig en boolean. Option[A] bliver værdien ved Some(x), eller null / udelades ved None. Instant, LocalDateTime og andre java.time-typer kommer ud som ISO-8601-strenge.
Collections følger den oplagte mapping. List, Seq, Vector og Set bliver alle til JSON-arrays. Map[String, A] bliver et JSON-objekt. Tuples bliver til JSON-arrays med blandede værdier. Indsætter du en sealed trait med case class-børn (en ADT), serialiseres hver variant i sin egen form, og parseren fanger det ADT-discriminator-mønster, de fleste biblioteker bruger. Indsæt flere top-level-klasser fra én fil (se Scala-repoet for inspiration) og hver af dem får sin egen JSON-entry.
Sådan bruger du det
Tre trin. Virker det samme for en enkelt case class og en hel modelfil.
Indsæt din Scala (eller prøv eksemplet)
Smid din Scala som den er ind i editoren til venstre. En case class, et sealed trait-hierarki, en instans eller flere klasser — alt går. Klik på Indlæs eksempel hvis du vil se et realistisk tilfælde først.
Behold dine imports, package-erklæringer og annotationer. Parseren ignorerer alt, der ikke er data. For sprogdetaljer er docs.scala-lang.org den officielle reference.
Tryk Konverter
Klik på den grønne Konverter-knap. Værktøjet læser Scalaen, går gennem hver klasse og hvert felt, og producerer JSON i ét gennemløb. En kort loading-indikator vises undervejs.
Kopier JSON'en
Højre panel fyldes med indrykket JSON. Smid det ind i en ScalaTest-spec, et mocket Akka HTTP-svar, en Play-fixture, eller din API-dokumentation.
Hvornår det virkelig hjælper
ScalaTest-fixtures
Du skal bruge en JSON-body for at stubbe en HTTP-klient i en Scala-servicetest. Indsæt case classen, tag payloaden, smid den ind i din spec.
Akka-/Play-HTTP-payloads
Lav en case class om til den JSON, du ville POST'e til din egen service. Nyttigt til hurtige curl-tests, når du kobler en ny endpoint op.
Kafka-message-eksempler
Generer eksempel-JSON-messages til et nyt Kafka-topic direkte fra dine domæne-case-classes — ingen håndskrevne eksempler, der driver fra koden over tid.
Dokumentation der matcher koden
Lav JSON-eksempler til API-dokumentation direkte fra dine rigtige case classes, så dokumenterne bliver ved med at være korrekte, mens modellerne udvikler sig.
Ofte stillede spørgsmål
Hvordan serialiseres Option-værdier?
Some(x) bliver værdien x; None bliver til JSON null. Det matcher default-opførslen i Circe. Vil du hellere have nøglerne udeladt ved None, kan du strippe dem bagefter — den sikre default holder formen forudsigelig.
Hvad med sealed traits og ADT'er?
Sealed traits med case class-børn serialiseres pr. variant. Det almindelige discriminator-mønster ({"type": "OrderPlaced", ...}), som Circe og Play JSON bruger, anvendes når flere varianter deler en parent trait, så du kan round-trippe dataen tilbage i ADT'en.
Hvordan håndteres java.time-typer?
Instant, LocalDate, LocalDateTime og ZonedDateTime serialiseres til ISO-8601-strenge. Det er den konvention, Circe, Play JSON og uPickle deler, og den round-tripper rent tilbage til java.time.
Kan den Map, List, Vector, Set?
Ja. List, Seq, Vector og Set bliver alle til JSON-arrays. Map[String, A] bliver et JSON-objekt — maps uden string-nøgler (Map[Int, A]) kommer ud som arrays af nøgle/værdi-par, for JSON understøtter kun string-nøgler.
Kan jeg indsætte en hel fil med flere case classes?
Ja. Hver top-level-klasse bliver sin egen JSON-entry, med nestede instanser foldet ud. Companion objects, implicit conversions og hjælpemetoder springes over — kun data ender i outputtet.
Gemmes min kode?
Din Scala sendes til backenden for at blive konverteret og bliver ikke persisteret. Vi logger ikke payloaden. Er koden følsom, så kig lige på den, før du indsætter.
Andre værktøjer du måske får brug for
Scala til JSON er én brik. De her spiller godt sammen med det: