Conversie van JSON naar Kotlin-gegevensklassen — Numio
Genereert Kotlin-gegevensklassen op basis van een JSON-voorbeeld. Gehele getallen worden lang, decimalen dubbel, geneste objecten krijgen hun eigen klasse en sleutels die in sommige array-items ontbreken, worden null-typen zoals Boolean?.
Een REST-antwoord modelleren voor een Android-app die JSON parseert met Jackson.
Wanneer gebruik je dit?
- Een REST-antwoord modelleren voor een Android-app die JSON parseert met Jackson.
- DTO's maken voor een Ktor- of Spring Boot-service op basis van een voorbeeldpayload.
Hoe werkt het
- Plak een representatief JSON-object of -array in de JSON-editor; neem array-items op die optionele sleutels tonen.
- Lees het Kotlin-paneel: de klasse op het hoogste niveau heet Root en geneste klassen worden genoemd op basis van hun sleutels (projecten worden Project).
- Kopieer de klassen, hernoem de naam Root en vervang Any? of Long waar uw API-contract anders zegt.
JSON-ingang
{
"id": 1024,
"full_name": "Ada Lovelace",
"email": null,
"roles": ["admin", "editor"],
"projects": [
{ "name": "Engine", "stars": 42 },
{ "name": "Notes", "stars": 7, "archived": true }
]
}Kotlin-gegevensklassen
import com.fasterxml.jackson.annotation.JsonProperty
data class Root(
val id: Long,
@JsonProperty("full_name")
val fullName: String,
val email: Any?,
val roles: List<String>,
val projects: List<Project>,
)
data class Project(
val name: String,
val stars: Long,
val archived: Boolean?,
)Details en beperkingen
Conversie wordt uitgevoerd in uw browser met de json_typegen WebAssembly module; de JSON is niet geüpload. Er zijn geen instellingen op deze pagina.
Sleutels die niet camelCase zijn, krijgen een Jackson @JsonProperty-annotatie en de import com.fasterxml.jackson.annotation.JsonProperty. kotlinx.serialization of Moshi-annotaties worden niet gegenereerd.
null-waarden en lege arrays bevatten geen type-informatie, dus worden ze Any? en Lijst<Any?>.
Null-velden hebben geen standaardwaarde (= null). Voeg zelf standaardwaarden toe als het veld ontbreekt bij deserialisatie.
FAQ
Waarom wordt een geheel getal getypt als Long in plaats van Int?
De generator gebruikt altijd Long voor hele getallen, zodat grote ID's niet overlopen. Getallen die te groot zijn voor een 64-bits geheel getal, of geschreven met een decimaalpunt, worden Double.
Kan ik een JSON-array in de root converteren?
Ja. Een rootarray produceert een typealias, bijvoorbeeld typealias Root = List<Root2>;, plus een dataklasse Root2 voor het elementtype. Hernoem beide zodat ze in uw code passen.
Waarom werd een korte gemengde array Pair<Long, String>?
json_typegen behandelt een korte array waarvan de items verschillende typen hebben als een tupel, dus [1, "a"] wordt Pair<Long, String>. Wijzig dit in List<Any> als de array in werkelijkheid een lijst is.