Kotlin 使用 Gson 将 json 字符串转换为对象列表
Posted
技术标签:
【中文标题】Kotlin 使用 Gson 将 json 字符串转换为对象列表【英文标题】:Kotlin convert json string to list of object using Gson 【发布时间】:2018-05-29 03:45:12 【问题描述】:我在使用 Kotlin 编写从 JSON 字符串转换为对象列表的代码时遇到问题。
在Java中通常是这样的:
Gson gson = new Gson();
Type type = new TypeToken<List<SomeOjbect>>() .getType();
List<SomeOjbect> measurements = gson.fromJson(json, type);
return measurements;
但是在 Kotlin 中,当我这样尝试时:
val gson = Gson()
val type: Type = TypeToken<List<SomeOjbect>>.type
val measurements : List<SomeOjbect> = gson.fromJson(text, type)
return measurements
IDE android Studio 将 TypeToken 表示为错误:
无法访问'
':它是public/package/在'TypeToken'中
并且还强调了 所说的错误:
类型不匹配。 必需的: 类型! 成立: () → 单位
那么有没有办法让它适用于 Kotlin?
【问题讨论】:
试试这个,它使用对象而不是 Type.. 测量值:List您可以尝试这样做:
val objectList = gson.fromJson(json, Array<SomeObject>::class.java).asList()
编辑 [2020 年 1 月 14 日]:您不应该再使用 GSON。项目维护者之一 Jake Wharton 建议使用 Moshi、Jackson 或 kotlinx.serialization。
【讨论】:
链接:reddit.com/r/androiddev/comments/ejjroe/… 哇!这是我的 android 网络堆栈中最大的变化:D【参考方案2】:试试这个,它使用对象而不是类型..
measurements : List<SomeOjbect> = gson.fromJson(text, object : TypeToken<List<SomeOjbect>>() .type)
【讨论】:
以上是关于Kotlin 使用 Gson 将 json 字符串转换为对象列表的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 的 Kotlin 中使用 GSON 将 JSON 对象转换为 JSON 数组
构建 Kotlin 类以使用 Gson 将 json 响应转换为类