Gson 无法解析 Kotlin 中的字符串 json 格式数据

Posted

技术标签:

【中文标题】Gson 无法解析 Kotlin 中的字符串 json 格式数据【英文标题】:Gson can't parse a string json format data in Kotlin 【发布时间】:2017-12-14 18:31:37 【问题描述】:

我正在用 Kotlin 编写一个应用程序。我有一个来自网络服务的原始 JSON 字符串,我需要将它与 Gson 一起使用。

我正在这样做:

val gson = Gson()
val friends = gson.fromJson(response.rawResponse, JsonElement::class)

但编译器无法找到正确的 fromJson 方法重载,目前可以使用该方法重载 (fromJson(json: String!, typeOfT: Type!))。

这是错误:

Error:(65, 50) None of the following functions can be called with the arguments supplied:
public open fun <T : Any!> fromJson(json: JsonElement!, classOfT: Class<JsonElement!>!): JsonElement! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(json: JsonElement!, typeOfT: Type!): JsonElement! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(reader: JsonReader!, typeOfT: Type!): JsonElement! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(json: Reader!, classOfT: Class<JsonElement!>!): JsonElement! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(json: Reader!, typeOfT: Type!): JsonElement! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(json: String!, classOfT: Class<JsonElement!>!): JsonElement! defined in com.google.gson.Gson
public open fun <T : Any!> fromJson(json: String!, typeOfT: Type!): JsonElement! defined in com.google.gson.Gson

我做错了什么?

【问题讨论】:

【参考方案1】:

您应该传递java.lang.Class 而不是kotlin.reflect.KClass,例如:

val friends = gson.fromJson(response.rawResponse, JsonElement::class.java)

【讨论】:

这解决了这个问题。太感谢了!我会接受你的回答:) @NicolaGiancecchi 一点也不。这是我的荣幸,:)

以上是关于Gson 无法解析 Kotlin 中的字符串 json 格式数据的主要内容,如果未能解决你的问题,请参考以下文章

Gson - 如何在 Kotlin 中解析部分 json

Android kotlin解析器Gson Volley

如何使用带有 Kotlin 的 Gson 库访问 JSON 有效负载中的嵌套值

如何使用 Gson 解析验证我的 Junit 测试

如何在 kotlin 中通过 GSON lib 解析 JSON 时管理 android 应用程序的空值

JavaScript无法从Java解析用Gson序列化的字符串[重复]