相关疑难解决方法(0)

Swift 4可解码,直到解码时间才知道密钥

Swift 4可解码协议如何处理包含密钥的字典,该密钥的名称在运行时才知道?例如:

  [
    {
      "categoryName": "Trending",
      "Trending": [
        {
          "category": "Trending",
          "trailerPrice": "",
          "isFavourit": null,
          "isWatchlist": null
        }
      ]
    },
    {
      "categoryName": "Comedy",
      "Comedy": [
        {
          "category": "Comedy",
          "trailerPrice": "",
          "isFavourit": null,
          "isWatchlist": null
        }
      ]
    }
  ]
Run Code Online (Sandbox Code Playgroud)

这里我们有一系列字典; 所述第一有键categoryNameTrending,而第二个有密钥categoryNameComedy.categoryName键的值告诉我第二个键的名称.如何使用Decodable表达?

json swift4 decodable

48
推荐指数
2
解决办法
1万
查看次数

Swift 4 Codable; 如何使用单根级别密钥解码对象

我正在使用Codable带有JSON数据的Swift 4 协议.我的数据被格式化为在根级别有一个键,其中一个对象值包含我需要的属性,例如:

{
  "user": {
    "id": 1,
    "username": "jdoe"
  }
}
Run Code Online (Sandbox Code Playgroud)

我有一个User可以解码user密钥的结构:

struct User: Codable {
  let id: Int
  let username: String
}
Run Code Online (Sandbox Code Playgroud)

由于idusername是的性质user,而不是在根级别,我需要使一个包装类型,如下所示:

struct UserWrapper: Codable {
  let user: User
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以通过UserWrapper,解码JSON ,并User解码.它似乎是很多冗余代码,因为我需要在我拥有的每种类型上都有一个额外的包装器.有没有办法避免这种包装模式或更正确/优雅的方式来处理这种情况?

json deserialization swift swift4 codable

32
推荐指数
4
解决办法
1万
查看次数

标签 统计

json ×2

swift4 ×2

codable ×1

decodable ×1

deserialization ×1

swift ×1