【问题标题】:How to Serialize objects of same type within an object?如何序列化对象中相同类型的对象?
【发布时间】:2020-12-25 04:11:03
【问题描述】:

我想将以下 JSON sn-p 结构化/转换为 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

【问题讨论】:

    标签: android json kotlin serialization


    【解决方案1】:

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

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

    然后:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 2016-05-15
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多