我有问题转换Lists
-〉Strings
和'字符串'到'列表'的类型转换器在android工作室。
实体
data class Results(
@PrimaryKey(autoGenerate = true)
val id:Int? = null,
val category: List<String>,
val content: String?,
val country: List<String>?,
val creator: List<String>?,
val description: String?,
val image_url: String?,
val keywords: List<String>?,
val language: String?,
val link: String?,
val pubDate: String?,
val source_id: String?,
val title: String?,
val video_url: String?
)
类型转换器
class Converters() {
@TypeConverter
fun listToJsonString(value: List<String>?): String? = Gson().toJson(value)
@TypeConverter
fun jsonStringToList(value: String?) =
Gson().fromJson(value, Array<String>::class.java).toList()
}
这是应该工作,但我得到了这个错误Gson().fromJson(value, Array<String>::class.java) must not be null
,我假设我需要确保jsonStringToList
中的value
参数不是null
。
我该怎么做呢?
1条答案
按热度按时间shyt4zoc1#
使用Room2.5.0和com.google.code.gson库2.10.1以及core.ktx1.9.0可以编译并运行代码。
例如:
结果:-
日志包含:-
和应用程序检查显示:-
如果您指定一个空值而不是一个空列表,那么在尝试提取数据时,您将得到一个空指针异常。
例如,如果
country = listOf(),
更改为country = null,
,则:-即使应用程序检查显示该行已成功插入:-
简而言之,您应该保存一个空列表,并且不允许空值,否则使用TypeConverter会在遇到空值时导致异常。因此,您应该始终使用
List<String>
,而不是List<String>?
。