Wklej Kotlin po lewej i kliknij "Konwertuj" — zamienimy to na JSONWklej kod Kotlina

Co robi to narzędzie

Jeśli kiedykolwiek musiałeś ręcznie napisać payload JSON odwzorowujący data class z Kotlina — pod unit test, fixture albo wywołanie API — wiesz, ile przy tym zabawy. Normalnie sięgasz po kotlinx.serialization, dodajesz annotację do klasy i odpalasz apkę, żeby wyciągnąć output. Wklej Kotlina tutaj i odbierz poprawny JSON bez niczego z tego — bez pluginu Gradle, bez @Serializable, bez runtime'u.

Konwerter respektuje to, jak wartości Kotlina rzeczywiście się serializują. val price: Double = 49.99 staje się liczbą JSON, val tags: List<String> tablicą JSON, a val address: Address? z null — JSON-owym null. Instant, LocalDate i LocalDateTime z kotlin.stdlib wychodzą jako stringi ISO-8601. UUID to standardowy hex. Map<String, V> przechodzi w obiekt JSON, a wartości enum class wychodzą pod swoją nazwą jako string — dokładnie to samo zachowanie co w Gsonie czy jackson-module-kotlin.

Annotacje serializacyjne są honorowane. @SerialName("x") zmienia nazwę klucza JSON, @Transient wyrzuca property. Domyślne wartości parametrów są wypisywane, gdy property nie jest explicite ustawione. Wklej kilka data class-ów naraz — każda wyjdzie jako wpis najwyższego poziomu, z rozwiniętymi typami zagnieżdżonymi i hierarchiami sealed class spłaszczonymi do ich wariantów. Jeśli wydajesz apkę Android, output leci prosto do fixtur Retrofita i seedów testów Rooma.

Jak tego użyć

Trzy kroki. Działa tak samo, czy wklejasz pojedynczą instancję, czy cały plik pełen data class.

1

Wklej swój Kotlin (albo wczytaj przykład)

Wrzuć Kotlina do lewego edytora tak jak jest. data class, zwykła klasa, deklaracja object, kilka klas albo hierarchie sealed — wszystko OK. Kliknij Wczytaj przykład, żeby zobaczyć najpierw realistyczny przypadek.

Nie musisz wyrzucać import-ów, packagy ani annotacji. Zostaw składnię Kotlina jak jest — companion objecty i backing fieldy też w porządku.

2

Kliknij Konwertuj

Kliknij zielony przycisk Konwertuj. Narzędzie czyta Kotlina, zachowuje każdą data class i property, i wypluwa JSON w jednym przejściu. W tym czasie leci krótki wskaźnik ładowania.

3

Skopiuj JSON

Prawy panel zapełnia się wcięciowym JSON-em. Wklej do testu Retrofita, fixture Rooma, przykładów OpenAPI albo klienta REST. Cały flow.

Kiedy to naprawdę ratuje tyłek

Fixture API dla apek Android

Masz request model Retrofita i potrzebujesz payloada JSON do wrzucenia w MockWebServer albo Postmana. Wklej data class, łap JSON, lecisz dalej.

Dane testowe backendu

Serwis Ktor lub Spring z 30 data class. Skonwertuj każdą na pliki JSON-seed pod testy integracyjne bez napisania ani jednej annotacji <code>@Serializable</code>.

Dokumentacja, która nie odstaje

Generuj przykłady JSON do swojej specyfikacji OpenAPI albo referencji API prosto z prawdziwych data class, więc docsy nigdy nie odjeżdżają od modeli.

Startery plików konfiguracyjnych

Data class Settings z dwudziestoma paroma properties zmienia się w gotowy do edycji szablon JSON — bez ręcznego boilerplate'u.

Częste pytania

Muszę mieć zainstalowane kotlinx.serialization albo Jacksona?

Nie. To narzędzie leci po stronie serwera i nie kompiluje twojego kodu — dostajesz JSON bez żadnego pluginu. Jeśli chcesz serializacji w runtime w swojej apce, natywnym wyborem jest kotlinx.serialization; jackson-module-kotlin też robi robotę.

Czy honoruje @SerialName, @Transient i @JsonProperty?

Tak. @SerialName("x") i @JsonProperty("x") zmieniają nazwę klucza JSON, a @Transient / @JsonIgnore usuwają property z outputu — zgodnie z semantyką kotlinx.serialization.

A co z Instantem, LocalDate i UUID?

Instant, LocalDate, LocalDateTime i ZonedDateTime wychodzą wszystkie jako stringi ISO-8601. UUID to standardowy hex 8-4-4-4-12. Duration staje się stringiem duration.

Jak obsługiwane są nullable, sealed class i enumy?

Nullable properties z wartością null stają się JSON-owym null; inaczej typ wewnętrzny serializuje się normalnie. Instancje sealed class domyślnie zawierają type discriminator (konfigurowalny, jeśli używasz kotlinx.serialization). Enumy wychodzą pod swoją nazwą jako string, chyba że annotacja mówi inaczej.

Czy mój kod jest zapisywany?

Twój kod leci na backend do konwersji i nie jest persystowany — nie logujemy payloadu. Jak zawsze, rzuć okiem na wrażliwy kod przed wklejeniem.

Czy działa zarówno dla Kotlin/JVM, jak i Kotlin Multiplatform?

Tak. Dopóki składnia to poprawny Kotlin, konwerterowi jest wszystko jedno, czy targetem jest JVM, JS, Native czy Multiplatform. Typy specyficzne dla platformy bez reprezentacji JSON (jak Job czy Flow) wychodzą jako null.

Inne narzędzia, które mogą się przydać

Kotlin do JSON to jeden element układanki. Te dobrze się z nim dogadują: