gpt4 book ai didi

android - Kotlin/Room 错误 : Parameter specified as non-null is null: method kotlin. jvm.internal.Intrinsics.checkParameterIsNotNull,参数消息

转载 作者:行者123 更新时间:2023-12-02 12:53:45 28 4
gpt4 key购买 nike

不确定是什么原因造成的,但我正在尝试从 api 请求数据,其中包括一组 Message 对象。如果我将结果打印到控制台,除了 Messages=null 之外数据是正确的,而我希望 Message 是一个对象数组。我不明白我错过了什么?

我收到这个错误:java.lang.IllegalArgumentException:指定为非空的参数为空:方法 kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数消息

谁能指出我正确的方向?下面的类代码:

const val PROFILE_RESPONSE_ID = 0

@Entity(tableName = "profile")
data class ProfileResponse(
val id: Int,
val name: String,
val code: String,
val title: String,
@SerializedName("profile_image")
val profileImage: String,
@SerializedName("background_image")
val backgroundImage: String,
@Embedded(prefix = "messages_")
val messages: ArrayList<Messages>,
) {
@PrimaryKey(autoGenerate = false)
var responseId: Int = PROFILE_RESPONSE_ID
}

示例 JSON:

{
"id": 44,
"name": "Jason",
"code": "jason",
"title": "Jason Scott",
"profile_image": "https://sampleurl.com/sample_profile.jpg",
"background_image": "",
"messages": [
{
"id": 0001,
"message": "Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.",
"timestamp": "Thu, 01 Jan 1970 01:00:00 +0100",
}
{
"id": 0002,
"message": "Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.",
"timestamp": "Thu, 01 Jan 1970 01:00:00 +0100",
}
{
"id": 0003,
"message": "Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.",
"timestamp": "Thu, 01 Jan 1970 01:00:00 +0100",
}
}

最佳答案

设法通过删除 @Embedded 来解决这个问题,因为我不一定需要另一个表中的数据,并添加了一个 TypeConverter 来将列表转换为 String 并返回(这 question 帮助).供其他人引用:

类型转换器类

class Convertors {

@TypeConverter
fun listToJson(value: List<Message>?): String {
return Gson().toJson(value)
}

@TypeConverter
fun jsonToList(value: String): List<Message>? {
val objects = Gson().fromJson(value, Array<Message>::class.java) as Array<Message>
val list = objects.toList()
return list
}

}

然后将@TypeConverters 添加到我的数据库类中。

数据库类

@Database(entities = [ProfileResponse::class], version = 1)
@TypeConverters(Convertors::class)
abstract class MainDatabase: RoomDatabase() {

abstract fun profileResponseDao(): ProfileResponseDao

}

关于android - Kotlin/Room 错误 : Parameter specified as non-null is null: method kotlin. jvm.internal.Intrinsics.checkParameterIsNotNull,参数消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54096816/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com