繁体   English   中英

如何在一个对象中序列化相同类型的对象?

[英]How to Serialize objects of same type within an object?

我想将以下 JSON 片段结构化/转换为 Kotlin 数据类,以便我可以在进一步表示中使用它。 有点期望玩家列表和每个对象都是玩家,现在我发现很难序列化相同类型的这种情况。

"Players": {
        "63084": {
          "Position": "1",
          "Name_Full": "Imam-ul-Haq",
          "Batting": {
            "Style": "LHB",
            "Average": "60.66",
            "Strikerate": "81.54",
            "Runs": "910"
          },
          "Bowling": {
            "Style": "LB",
            "Average": "0",
            "Economyrate": "0",
            "Wickets": "0"
          }
        },
        "57492": {
          "Position": "2",
          "Name_Full": "Fakhar Zaman",
          "Batting": {
            "Style": "LHB",
            "Average": "55.25",
            "Strikerate": "96.64",
            "Runs": "1326"
          },
          "Bowling": {
            "Style": "SLO",
            "Average": "88",
            "Economyrate": "4.75",
            "Wickets": "1"
          }
        },
        "59429": {
          "Position": "3",
          "Name_Full": "Babar Azam",
          "Batting": {
            "Style": "RHB",
            "Average": "50.6",
            "Strikerate": "84.4",
            "Runs": "2328"
          },
          "Bowling": {
            "Style": "OB",
            "Average": "0",
            "Economyrate": "0",
            "Wickets": "0"
          }
        }
}

可以做这样的事情:

 @SerializedName("63084")
  val player: Player

甚至对每个 id 重复都感觉效率不高,甚至每个玩家的 id 都是动态的和不同的。 这里肯定漏掉了一些重要的东西。

API: https : //cricket.yahoo.net/sifeeds/cricket/live/json/sapk01222019186652.json

您使用的 API 有点不标准,但您可以将 Players 字段映射到 Map<String, Player> ,例如:

data class Player(
    @SerializedName("Position")
    val position: String,
    @SerializedName("Name_Full")
    val name: String 
...)

进而:

@SerializedName("Players")
val player: Map<String, Player>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM