使用 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"}]
我尝试使用 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"}]