Я пытаюсь заполнить класс данных Kotlin из соответствующего строкового значения. Я посмотрел на: Класс данных Kotlin от Json, использующий 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)
но радости не было. stringValue - это то, что gson.toJson (значение) сгенерировано, где значение было JSONObject.
У кого-нибудь есть идея, что такое отключение?