Gson не использует десериализацию для типа generi c - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь разобрать это json {"value": [1, "a", "b"]} для тройного объекта. Гсон даже не называет мою десериализацию.

class TripleDeserializer: JsonDeserializer<Triple<Int, String, String>> {
    override fun deserialize(
        json: JsonElement?,
        typeOfT: Type?,
        context: JsonDeserializationContext?
    ): Triple<Int, String, String> {
        val f = json!!.asJsonArray.get(0).asInt
        val s = json.asJsonArray.get(1).asString
        val t = json.asJsonArray.get(2).asString
        return Triple(f, s, t)
    }
}

class SomeClass(val value: Triple<Int, String, String>)

fun another() {
    val input = "{\"value\": [1, \"a\", \"b\"] }"
    val type = object : TypeToken<Triple<Int, String, String>>() {}.type
    val gson = GsonBuilder()
        .registerTypeAdapter(type, TripleDeserializer())
        .create()
    val out = gson.fromJson(input , SomeClass::class.java)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...