Zamiana próbki JSON na data class w Kotlinie dla kotlinx.serialization, Gson lub Moshi
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.Wystarczy wkleić próbkę JSON, aby otrzymać data class w Kotlinie dla kotlinx.serialization, Gson lub Moshi. Liczby całkowite stają się Int, powyżej 2 147 483 647 Long, każda wartość dziesiętna zmienia właściwość na Double, wartość null czyni ją nullowalną, a klucz brakujący w niektórych obiektach staje się T? = null, aby wszystkie 3 biblioteki go zdekodowały.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej próbkę JSON, na przykład odpowiedź API, do lewego pola.
Data class w Kotlinie pojawiają się w trakcie pisania, po jednej na obiekt, z właściwościami w camelCase i adnotacją tam, gdzie klucz jest inny.
Wybierz kotlinx.serialization, Gson lub Moshi, w razie potrzeby var zamiast val, oraz nazwę klasy głównej.
Kliknij Kopiuj albo Pobierz, aby zapisać Models.kt.
Kotlin wczytuje JSON do data class, a każdy obiekt potrzebuje klasy, której właściwości mają właściwe typy, właściwą nullowalność i sposób powrotu do swoich kluczy. Konwerter pisze takie klasy na podstawie próbki, więc długa odpowiedź API staje się kodem Kotlin po jednym wklejeniu.
Jak dobierane są typy.
| Wartość JSON | Typ Kotlin |
|---|---|
| "text" | String |
| true / false | Boolean |
| 42 (tylko liczby całkowite) | Int lub Long powyżej 32 bitów |
| 4.5 (wystąpiła jakakolwiek część dziesiętna) | Double |
| null oraz inny typ | String?, Int? |
| tylko null lub różne rodzaje | JsonElement? lub Any? |
| [ ... ] | List<...> |
| { } pusty | JsonObject lub Map<String, Any?> |
| { ... } | osobna data class |
Brakujące klucze. Wszystkie obiekty tablicy są łączone w jedną klasę. Klucz, który niektóre pomijają, staje się nullowalny z null jako wartością domyślną, ponieważ kotlinx.serialization i Moshi traktują brakujący klucz bez wartości domyślnej jako błąd. kotlinx.serialization odrzuca też klucze, dla których nie ma właściwości, więc każdy klucz próbki dostaje własną.
Nazwy. Właściwości są w lowerCamelCase. Gdy zmienia to klucz, np. user_name na userName, właściwość dostaje @SerialName, @SerializedName lub @Json(name = ...), zależnie od biblioteki. Słowa kluczowe, np. class, są zapisywane w odwróconych apostrofach. Ciągi w adnotacjach poprzedzają znak dolara ukośnikiem, bo Kotlin odczytałby go jako szablon.
Opcje. var zamiast val daje właściwości mutowalne. Pusty obiekt staje się zwykłą klasą, bo data class wymaga co najmniej jednej właściwości. Klasa główna nazywa się Root, chyba że zostanie nazwana inaczej.
Każdy wynik sprawdzono, odczytując kod Kotlin z powrotem i dekodując 9 próbek według domyślnych reguł kotlinx.serialization. Nic, co zostanie wklejone, nie opuszcza przeglądarki.
Po wklejeniu próbki JSON do konwertera obok pojawiają się data class, po jednej na obiekt. Z kotlinx.serialization należy dodać wtyczkę i dekodować przez Json.decodeFromString<Root>(text); z Gson użyć Gson().fromJson(text, Root::class.java); z Moshi zbudować adapter dla Root.
Klucz, który niektóre obiekty tablicy pomijają, dostaje typ nullowalny i null jako wartość domyślną. kotlinx.serialization i Moshi odrzucają brakujący klucz, jeśli właściwość nie ma wartości domyślnej, więc to właśnie ona pozwala zdekodować każdy obiekt próbki.
kotlinx.serialization to biblioteka samego Kotlina, działa na każdej platformie Kotlin i sprawdza typy podczas kompilacji. Moshi z codegen pasuje do projektów Android, które już używają Retrofit i Okio. Gson jest najstarszy i nie wymaga konfiguracji, ale przy tworzeniu obiektów ignoruje bezpieczeństwo null w Kotlinie i wartości domyślne.
Właściwości są w lowerCamelCase, więc user_name staje się userName, a @SerialName, @SerializedName lub @Json(name = ...) zachowuje oryginalny klucz. Klucz będący słowem kluczowym Kotlina, np. class lub object, jest zapisywany w odwróconych apostrofach, co zachowuje klucz jako prawdziwą nazwę właściwości.
Liczby całkowite stają się Int lub Long, gdy wartość przekracza 2 147 483 647, a pole staje się Double, gdy tylko którakolwiek wartość w próbce ma część dziesiętną. Wartości różnych rodzajów stają się JsonElement? w kotlinx.serialization lub Any? w Gson i Moshi.
Nie. Konwersja działa w przeglądarce bez żadnego żądania do serwera, a JSON nie jest zapisywany, więc odpowiedzi API z tokenami lub danymi osobowymi zostają na urządzeniu. Po zamknięciu karty nic nie pozostaje.
Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.
Nadal coś nie działa? Zapytaj o narzędzie Konwerter JSON na data class w Kotlinie a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.