Создание настраиваемой модели класса данных с помощью Kotlin Koin - PullRequest
0 голосов
/ 17 января 2020

Я новичок в Kotlin и понимаю концепции по мере движения. Застрял в создании одного типа модели класса данных, где структура ответа json, как показано ниже

enter image description here

data class SPLPlayer(

    @field:Json(name ="id") val playerId: String?,
    val type: String?,
    @field:Json(name ="value") val currentValue: String?,
    @field:Json(name ="Confirm_XI") val isIn_XI:  Boolean = false,
    @field:Json(name ="Matches") val totalMatchs: String?,
    @field:Json(name ="Position") val position: String?,
    @field:Json(name ="Skill") val skill: String?,
    @field:Json(name ="skill_name") val skillName: String?,

    val teamId: String?,
    val name: String?, // other keys to refer Name_Full, short_name

    @field:Json(name ="Bowling") val bowler: SPLBowler? = null,
    @field:Json(name ="Batting") val batsmen: SPLBatsmen? = null


)

data class SPLTeamInfo (


     **How to parse the Team object which is dictionary**


)

Спасибо и ценим каждого читателя. Ждем решения.

1 Ответ

0 голосов
/ 17 января 2020

Вы сможете использовать свой собственный десериализатор, добавив аннотацию к установщику @set:JsonDeserialize() и передав свою собственную реализацию десериализатора.

в соответствии с:

import com.fasterxml.jackson.databind.annotation.JsonDeserialize
import com.fasterxml.jackson.databind.JsonDeserializer
.. rest of imports

// for a given simplified json string
val json: String = """{"teams":{"1":{"name":"foo"},"2":{"name":"bar"}}}"""

class MyDeserializer : JsonDeserializer<List<Team>> {
    override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): List<Team>? {
        // iterate over each json element and return list of parsed teams
    }
}

data class JsonResp (
  @set:JsonDeserialize(using = MyDeserializer::class)
  val teams: List<Team>
)

data class Team (
  val id: String, // this is going to be a team key
  val name: String
)

Tried GitHub поиск с запросом @set:JsonDeserialize и он показывает тысячи примеров.

...