Che cosa fa questo strumento
Un campione JSON diventa data class Kotlin, una per oggetto.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
data class Root(
val id: Long,
val firstName: String,
val address: Address,
)
data class Address(
val city: String,
)
Ogni proprietà è un val: un carico decodificato è un valore. Le data class danno equals, hashCode, toString e copy() — quest’ultima è il modo di cambiare un campo senza mutare nulla.
La chiave resta la chiave
Gli identificatori Kotlin si scrivono tra backtick, e tanto basta per tenere una chiave JSON così com’è:
data class Root(
val `content-type`: String,
val `class`: Long,
val `2fa`: Boolean,
)
class è una parola chiave, content-type ha un trattino, 2fa comincia con una cifra — tra backtick nulla di ciò conta. Con kotlinx.serialization il nome della proprietà è il nome JSON: si decodifica così com’è, senza alcuna annotazione.
Con Jackson o Moshi il nome della proprietà è ugualmente ciò che cercano, quindi i nomi tra backtick funzionano anche lì. Solo se decidi di rinominare una proprietà — contentType invece di `content-type` — ti serve @JsonProperty("content-type") o @Json(name = "content-type") per tornare a puntare alla chiave.
I tipi, e il ? che non c’è
- Gli interi diventano
Longe i decimaliDouble, ciò che un numero JSON regge senza discussioni. nulle i valori ignoti diventanoAny?— l’unico posto dove compare un punto interrogativo, perché è l’unico in cui il campione ne mostrava uno.- Un array vuoto o misto diventa
List<Any>.
Nient’altro è annullabile e nulla ha un valore predefinito. Un campo a volte assente è un ? e un = null che aggiungi tu, quando un secondo carico ti avrà detto ciò che questo non poteva.
Due chiavi, due proprietà
Due chiavi che colliderebbero come nomi di proprietà restano distinte invece di fondersi: la seconda prende un suffisso numerato. Poiché il nome tra backtick è il nome JSON, qui le collisioni sono rare: capitano solo quando una riparazione è inevitabile.
Privato per progettazione
Tutto viene eseguito localmente nel browser con JavaScript. I tuoi dati non vengono mai caricati, quindi lo strumento è sicuro per contenuti sensibili e funziona anche offline.