如何处理 JSON 数据 swiftUI 中的 `self` 变量

How to Deal With `self` Variable in JSON data swiftUI

我正在尝试访问 Schoology API from my app, designed for our school. I've been using the OAuthSwift 包以获得 OAuth 1 支持。

在 Schoology 的回复中,这出现了多次

"links": {
    "self": "https:\/\/api.schoology.com\/v1\/messages\/inbox\/9999999"
}

我遇到困难的地方是将 JSON 解码为 Codable 结构。我不能简单地编码:

struct Links: Codable {
    let self:String
}

由于self已经被swift保留,不能作为变量名使用。是否有另一种方法来解码 Swift 中的 JSON 数据来避免此问题?

下面打印了JSON响应的完整结构:(注意:数组中有很多消息,都共享相同的结构。)

{
  "message": [
    {
      "id": 9999999,
      "subject": "Your homework is late, prepare for termination.",
      "recipient_ids": "9999999",
      "last_updated": 9999999,
      "mid": null,
      "author_id": 9999999,
      "message_status": "read",
      "message": null,
      "links": {
        "self": "https:\/\/api.schoology.com\/v1\/messages\/inbox\/9999999"
      }
    },
  ],
  "links": {
    "self": "https:\/\/api.schoology.com\/v1\/messages\/inbox?start=0&limit=20"
  },
  "unread_count": "0"
}

如果你已经走到这一步,我感谢你。但是,如果我没有提供足够的信息,所有代码都可以在 API 分支的 GitHub page 上找到。

您可以使用反引号转义保留字:

struct Links: Codable {
   var `self`: String
}

如果您不想使用 self,您可以使用手动定义的 CodingKeys:[=15= 将 json 键映射到不同的 属性 ]

struct Links: Codable {
   var me: String

   enum CodingKeys: String, CodingKey {
      case me = "self"
   }
}

这是documentation