Builtin classes
Tots el tipus primitius i algunes classes de la llibreria estàndard de Kotlin es serialitzen per defecte.
Introducció
A continuació anem a veure tots els tipus que es serialitzen per defecte.
Primitives
La serialització de Kotlin té aquest deu “primitives”: Boolean, Byte, Short, Int, Long, Float, Double, Char, String, i enumeracions.
Els tipus Boolean, Char i String es poden utilitzar sense cap tipus de consideració al respecte, però els altres necessiten algunes aclaracions.
Números
Kotlin té 4 tipus per representar números enters i 2 tipus per representar números en coma flotat, i com hem dit abans, tots són serialitzables.
@Serializable
class Data(
val answer: Int,
val pi: Double
)
fun main() {
val data = Data(42, PI)
println(Json.encodeToString(data))
}Pots veure que aquests números es codifiquen sense problemes en JSON:
"answer": 42,
"pi": 3.141592653589793
}Codificar un Long
Hi ha llenguatges de programació que tenen més tipus, i altres menys, però el que ens interessa en el procés de serialització és el tipus que pot representar el format al qual codifiquem les dades.
JSON utilitza els tipus de Javascript, i Javascritpt només té el tipus number que equival a un Double.
Ja saps que qualsevol valor de tipus Byte, Short, Int o Float es pot representar amb un Double, peró no tots els valors de tipus Long es poden representar amb un Double.
Per defecte, un Long amb un valor molt gran es codifica tal qual:
TODO els dos literals coincidents
@Serializable
class Data(val signature: Long)
fun main() {
val data = Data(0x1CAFE2FEED0BABE0)
println(Json.encodeToString(data))
}Pot veure que signature es codifica com un número encara que un number (o un Double) no pugui representar aquest número:
Estàs llegint una vista prèvia.
Inicia sessió per llegir l'article complet. Qualsevol compte obre 4 articles gratuïts al mes; l'alumnat i el professorat llegeixen les pàgines del seu curs sense límit.
Inicia sessió