Gson 映射<String, Any> 到对象

Mar*_*tek 4 java android gson kotlin

将 JSON 格式转换为Map<String, Any>相应的 java/kotlin 对象的最有效方法是什么?

现在我必须像这样使用它,这似乎是一个愚蠢的实现。

gson.fromJson(gson.toJson(mapToConvert), typeToken)

有什么建议?

Moi*_*ira 5

您可以使用JsonElement

val jsonElement = gson.toJsonTree(map)
val foo = gson.fromJson(jsonElement, Foo::class.java)
Run Code Online (Sandbox Code Playgroud)

您可以使用实用程序功能使其看起来更好:

inline fun <reified T : Any> Gson.fromMap(map: Map<*, *>) {
    return fromJson(toJsonTree(map, T::class.java)
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样称呼它:

gson.fromMap<Foo>(map)
Run Code Online (Sandbox Code Playgroud)