android - 使用 GSON 转换的 Kotlin 数据类始终返回 null
问题描述
我尝试使用 GSON 作为 JSON 字符串存储数据类。但是,gson 总是返回 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)
}
这返回
D/EXPORT_TEST: [ImageEntry(id=0, type=test, path=test)]
D/EXPORT_TEST: [null]
我尝试@SerializedName
从这里使用(Kotlin Data Class from Json using GSON)但结果相同。
gson 2.8.7 科特林 1.5.10
我究竟做错了什么?
解决方案
我不确定这里真正的“根本”原因,但发生这种情况是因为您的ImageEntry
类定义是jsonTest()
函数本地的。将类定义移到函数之外:
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"}]
推荐阅读
- xcode - 我在哪里更改 xcode >= 12.3 中的版本和内部版本号
- javascript - 无法从多个集合 Firebase 中检索数据
- python - Python 进程以相对较高的并发性挂在“加入”上
- google-oauth - 在 Google Fit REST API 中为 com.google.blood_pressure 创建数据源时出现 403 错误
- json - 使用 axios 从 twilio 运行时获取实时 json 数据
- php - 链接不阅读下划线和后面的文字
- reactjs - 从 Location.State 分配时反应状态值未定义
- node.js - 联系表单错误消息在组件中不可见
- linux - Shell 脚本在 gawk 命令中给出错误
- flutter - Flutter Google Maps 信息窗口文本颜色