Scala till JSON-konverterare
Klistra in dina Scala case classes eller objekt. Få ren JSON tillbaka.
Vad verktyget gör
Om du har en Scala-case class med ett dussin fält och behöver motsvarande JSON-payload — för ett test, ett API-anrop, en Kafka-meddelandefixtur — blir det tröttsamt snabbt att knåpa ihop för hand. Klistra in Scalan här och få giltig JSON tillbaka. En enda case class, en hel fil full av dem, eller en instans byggd med named arguments — samma flöde, samma resultat.
Konverteraren följer det som vanliga Scala JSON-bibliotek producerar. Circe, Play JSON och uPickle serialiserar en case class genom att göra om fälten till JSON-nycklar — det är precis vad du får här. Int, Long, Double och BigDecimal blir JSON-tal. Boolean förblir en boolean. Option[A] blir värdet vid Some(x), eller null / utelämnas vid None. Instant, LocalDateTime och java.time-typerna kommer ut som ISO-8601-strängar.
Collections följer den självklara mappingen. List, Seq, Vector och Set blir alla JSON-arrays. Map[String, A] blir ett JSON-objekt. Tuples blir JSON-arrays med blandade värden. Klistrar du in en sealed trait med case class-barn (en ADT) serialiseras varje variant i sin egen form, och parsern snappar upp det ADT-discriminator-mönster som de flesta bibliotek använder. Klistra in flera top-level-klasser från samma fil (titta i Scala-repot för inspiration) och var och en blir sin egen JSON-post.
Så använder du det
Tre steg. Fungerar likadant för en enskild case class som för en hel modellfil.
Klistra in din Scala (eller testa exemplet)
Släng in din Scala som den är i vänstra editorn. En case class, en sealed trait-hierarki, en instans eller flera klasser — allt går. Klicka Ladda exempel om du vill se ett realistiskt fall först.
Behåll dina imports, package-deklarationer och annotations. Parsern ignorerar det som inte är data. För språkdetaljer är docs.scala-lang.org den officiella referensen.
Klicka på Konvertera
Tryck på den gröna Konvertera-knappen. Verktyget läser Scalan, går igenom varje klass och fält, och producerar JSON i en enda pass. En kort laddningsindikator visas under tiden.
Kopiera JSON-en
Högra panelen fylls med indenterad JSON. Klistra in det i en ScalaTest-spec, ett mockat Akka HTTP-svar, en Play-fixtur, eller din API-dokumentation.
När det faktiskt räddar dagen
ScalaTest-fixturer
Du behöver en JSON-body för att stubba en HTTP-klient i ett Scala-servicetest. Klistra in case classen, ta payloaden, släng in den i din spec.
Akka-/Play-HTTP-payloads
Gör om en case class till JSON-et du skulle POST:a till din egen service. Smidigt för snabba curl-tester när du kopplar upp en ny endpoint.
Kafka-meddelandeexempel
Generera exempel-JSON för ett nytt Kafka-topic direkt från dina domän-case-classes — inga handskrivna exempel som glider isär från koden med tiden.
Dokumentation som matchar koden
Producera JSON-exempel till API-dokumentation direkt från dina riktiga case classes, så att dokumenten förblir korrekta när modellerna utvecklas.
Vanliga frågor
Hur serialiseras Option-värden?
Some(x) blir värdet x; None blir JSON null. Det matchar defaultbeteendet i Circe. Vill du hellre att nycklarna utelämnas vid None kan du skala bort dem efteråt — den säkra defaulten håller formen förutsägbar.
Vad händer med sealed traits och ADT:er?
Sealed traits med case class-barn serialiseras per variant. Det vanliga discriminator-mönstret ({"type": "OrderPlaced", ...}) som Circe och Play JSON använder appliceras när flera varianter delar en parent trait, så att du kan round-trippa datan tillbaka in i ADT:n.
Hur hanteras java.time-typer?
Instant, LocalDate, LocalDateTime och ZonedDateTime serialiseras till ISO-8601-strängar. Det är konventionen som delas av Circe, Play JSON och uPickle, och den round-trippar rent tillbaka till java.time.
Hanterar den Map, List, Vector, Set?
Ja. List, Seq, Vector och Set blir alla JSON-arrays. Map[String, A] blir ett JSON-objekt — mappar utan string-nycklar (Map[Int, A]) skickas ut som arrays av nyckel/värde-par, eftersom JSON bara stödjer string-nycklar.
Kan jag klistra in en hel fil med flera case classes?
Ja. Varje top-level-klass blir sin egen JSON-post, med nästade instanser expanderade. Companion objects, implicit conversions och hjälpmetoder hoppas över — bara data landar i utdatan.
Sparas min kod?
Din Scala skickas till backenden för konvertering och sparas inte. Vi loggar inte payloaden. Är koden känslig — ta en snabb titt innan du klistrar in.
Andra verktyg du kan behöva
Scala till JSON är en bit. De här passar bra ihop med det: