【发布时间】:2021-12-19 16:09:41
【问题描述】:
我正在尝试制作一个允许我查询所有元素的简单 API。它列出了客户和订单的所有数据。
我有针对客户和订单的 GET、POST、DELETE 路线。这些订单和客户是数据类。现在,当我尝试发送发布请求时,它会给出 500 INTERNAL SERVER ERROR 并给出此错误
kotlinx.serialization.SerializationException:找不到类“客户”的序列化程序。`
但我已经用@Serializable 注释了我的Customer 类。
我的 GET 请求正常工作。
客户数据类
data class Customer(
val id : String,
val firstName : String,
val lastName : String,
val email : String,
)
val customerStorage = mutableListOf<Customer>()
订单数据类
data class Order(
val number: String, //Because it will contain a number with dashes
val contents : List<OrderItem>,
)
@Serializable
data class OrderItem(
val item : String,
val amount : Int, //what is the amount of each item in each order
val price : Double,
)
//place to store our orders
val orderStorage = listOf(Order(
"2020-04-06-01", listOf(
OrderItem("Ham Sandwich",2,5.50),
OrderItem("Water",1,1.50),
OrderItem("Beer",3,2.30),
OrderItem("Cheesecake", 1,3.75)
)
),
Order("2020-04-03-01", listOf(
OrderItem("Cheeseburger",1,8.50),
OrderItem("Water", 2,1.50),
OrderItem("Coke",2,1.76),
OrderItem("Ice Cream", 1,2.35)
))
)
客户的发布路线
post{
val customer = call.receive<Customer>()
customerStorage.add(customer)
call.respondText("Customer stored correctly", status = HttpStatusCode.Created)
}
我指的是this tutorial
【问题讨论】:
-
请检查您是否添加了
kotlinx.serializationGradle 插件github.com/Kotlin/kotlinx.serialization#using-the-plugins-block 并使用适当的转换器ktor.io/docs/kotlin-serialization.html#register_converter 安装了ContentNegotiation插件。 -
感谢Aleksei Tirman 回复此问题。我已经检查过了,我已经添加了
kotlinx.serializationGradle 插件,因为我需要的转换器仅适用于 JSON,所以我已经安装了带有 JSON 转换器的ContentNegotiation。 -
由于我无法重现您的问题,能否请您分享您的项目?