gpt4 book ai didi

java - 使用 Gson 填充 Kotlin 数据类

转载 作者:行者123 更新时间:2023-11-29 08:27:42 26 4
gpt4 key购买 nike

我正在尝试从相应的字符串值填充 Kotlin 数据类。我看了看:Kotlin Data Class from Json using GSON但我试图做的不是跟踪完全相同的:

fun convertStringToObject(stringValue: String?, clazz: Class<*>): Any? {
return if (stringValue != null) {
try {
val gson = Gson()

gson.fromJson<Any>(stringValue, clazz)
}
catch (exception: Exception) {
// yes, we are swallowing the possible
// java.lang.IllegalStateException
null
}
}
else {
null
}
}

调用此函数并尝试填充以下类:

data class LoggedUser(
@SerializedName("id") val id: Long,
@SerializedName("name") val name: String,
@SerializedName("first_name") val firstName: String,
@SerializedName("last_name") val lastName: String,
@SerializedName("email") val email: String
)

它执行但 LoggedUser 值为空 (null)。

当前的字符串值是:

{"nameValuePairs":{"id":"1654488452866661","name":"Bob Smith","email":"bob.smith@test.net","first_name":"Bob","last_name":"Smith"}}

我什至尝试使用像这样的硬编码类值:

gson.fromJson(stringValue, LoggedUser::class.java)

但没有快乐。 stringValuegson.toJson(value) 生成的,其中 value 是一个 JSONObject。

有人知道我的脱节是什么吗?

最佳答案

您的 JSON 字符串实际上有两个 JSON 对象,外部值(它有一个名为 nameValuePairs 的键)和您实际想要反序列化的值(这是键 nameValuePairs< 处的值)。您需要更深入地研究一个级别,要么通过包含您的用户对象的外部包装类,要么通过手动获取键 nameValuePairs 处的 JsonObject 作为字符串,然后将其传递给 Gson。如果字符串只是 {"id":"1654488452866661","name":"Bob Smith","email":"bob.smith@test.net","first_name":"Bob","last_name ":"Smith" 它可以很好地反序列化。

关于java - 使用 Gson 填充 Kotlin 数据类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com