使用 GSON 转换的 Kotlin 数据 class 总是 returns null

Kotlin data class converted with GSON always returns null

我尝试使用 GSON 作为 JSON 字符串来存储数据 class。但是,gson 总是 returns null:

fun jsonTest() {
    data class ImageEntry(
        val id: Int,
        val type: String,
        val path: String)

    val images = mutableListOf<ImageEntry>()
    images.add(ImageEntry(0, "test", "test"))
    Log.d("EXPORT_TEST", "$images")

    val gson = Gson()
    val jsonString = gson.toJson(images)
    Log.d("EXPORT_TEST", jsonString)
}

这个returns

D/EXPORT_TEST: [ImageEntry(id=0, type=test, path=test)]
D/EXPORT_TEST: [null]

我尝试使用此处的 @SerializedName () 但结果相同。

gson 2.8.7 科特林 1.5.10

我做错了什么?

我不确定这里真正的“根本”原因,但这是因为您的 ImageEntry class 定义是 jsonTest() 函数的局部定义。将 class 定义移到函数外:

data class ImageEntry(
    val id: Int,
    val type: String,
    val path: String
)

fun jsonTest() {
    val images = mutableListOf<ImageEntry>()
    images.add(ImageEntry(0, "test", "test"))
    Log.d("EXPORT_TEST", "$images")

    val gson = Gson()
    val jsonString = gson.toJson(images)
    Log.d("EXPORT_TEST", jsonString)
}

当我运行这个时,输出如预期的那样出现:

D/EXPORT_TEST: [{"id":0,"type":"test","path":"test"}]