如何使用 Kotlin 序列化解析 JSON 对象列表中的第一个属性?

Posted

技术标签:

【中文标题】如何使用 Kotlin 序列化解析 JSON 对象列表中的第一个属性?【英文标题】:How to parse first property in list of JSON objects using Kotlin Serialization? 【发布时间】:2020-11-01 11:17:22 【问题描述】:

我正在使用 Kotlin 序列化来解析 JSON 数据。我只想将第一种类型(例如草)解析为我的数据类。我该怎么做?

@Serializable
data class PokemonResponse(
    val id: Int,
    val name: String,
    val type: String,
    val weight: Double,
    val height: Double
)

JSON


"height": 7,
"id": 1,
"name": "bulbasaur",
"types": [
    
        "slot": 1,
        "type": 
            "name": "grass",
            "url": "https://pokeapi.co/api/v2/type/12/"
        
    ,
    
        "slot": 2,
        "type": 
            "name": "poison",
            "url": "https://pokeapi.co/api/v2/type/4/"
        
    
],
"weight": 69

【问题讨论】:

I just want to parse the first type (eg. grass) to my data class.你说的是哪种草? 【参考方案1】:

该 JSON 的正确表示如下:

@Serializable
data class PokemonResponse(
    val id: Int,
    val name: String,
    val types: List<TypeSlot>,
    val weight: Double,
    val height: Double
)
@Serializable
data class TypeSlot(
    val slot: Integer,
    val type: Type,
)
@Serializable
data class Type(
    val name: String,
    val url: String,
)

要解析您看到的第一个类型,您可以像这样访问它: pokemonResponse.types[0].type.name 鉴于 pokemonResponse 是 PokemonResponse 类型。必须抓住他们!

【讨论】:

以上是关于如何使用 Kotlin 序列化解析 JSON 对象列表中的第一个属性?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Retrofit 2.0 (Kotlin) 正确解析嵌套的 JSON 对象?

Kotlin Android,从 HTTP 请求解析 Json

在 Kotlin 中使用 Moshi 和 Retrofit 解析具有增量对象名称的 JSON

如何通过改造将数组嵌套对象 Json 解析为 Kotlin?

尝试解析 json 字符串,但得到对象“”的预期开始,但改为“EOF”

如何在 Android 的 Kotlin 中使用 GSON 将 JSON 对象转换为 JSON 数组