web-dev-qa-db-fra.com

La classe Kotlinx-Serialization marquée @Serializable n'a pas la fonction d'extension .Sérialisateur ()

J'ai la classe de données suivante

@Serializable
data class Income(val id: String, 
                  val description: String, 
                  val amount: Int, 
                  val Time: Date, 
                  val userId: String)

maintenant, lorsque j'essaie d'utiliser la fonction. Serializer (), il est indiqué que le .Serializer () n'est pas défini pour la classe de revenus afin que mon projet ne compile pas.

    val response = Json.stringify(Income.serializer(), Incomes)
    call.respond(HttpStatusCode.OK,response) 

J'ai regardé deux fois la documentation dans le README.MD . Même regardé la vidéo d'annonce de kotlinconf

Est-ce que quelqu'un a eu le même problème? Qu'est-ce que je fais mal??

Éditer:

J'ai essayé de copier simplement coller les échantillons de la Readme.md et avoir le même problème.

import kotlinx.serialization.*
import kotlinx.serialization.json.*

@Serializable
data class Data(val a: Int, val b: String = "42")

fun main() {
    // Json also has .Default configuration which provides more reasonable settings,
    // but is subject to change in future versions
    val json = Json(JsonConfiguration.Stable)
    // serializing objects
    val jsonData = json.stringify(Data.serializer(), Data(42))
    // serializing lists
    val jsonList = json.stringify(Data.serializer().list, listOf(Data(42)))
    println(jsonData) // {"a": 42, "b": "42"}
    println(jsonList) // [{"a": 42, "b": "42"}]

    // parsing data back
    val obj = json.parse(Data.serializer(), """{"a":42}""") // b is optional since it has default value
    println(obj) // Data(a=42, b="42")
}

Cela ne compile pas aussi bien dans mon code. J'utilise actuellement Kotlin 1.3..61 et Kotlinx-Serialization-Runtime 0.14.0

8
yonBav

J'ai eu un problème similaire que mon fichier XML de tiroir de navigation n'a pas reconnu ma classe sérialisable, car je devais prolonger le Java.io.Serializable moi-même, un peu pour Kotlin, c'était bien:

@Serializable
data class Income(val id: String, 
                  val description: String, 
                  val amount: Int, 
                  val Time: Date, 
                  val userId: String) : Java.io.Serializable
0
Amin Keshavarzian