【问题标题】:How to parse this nested json in Swift 5? [closed]如何在 Swift 5 中解析这个嵌套的 json? [关闭]
【发布时间】:2020-03-03 17:09:05
【问题描述】:

在 iOS 中,我该如何解析这个 JSON?

{
  "status": 1,
  "data": [
    {
      "month": "8-2019",
      "jobs": [
        {
          "jobId": 4,
          "jobTitle": "",
          "jobDesc": "",
          "jobDate": "26 Sep 2019",
          "jobVenue": "Singapore",
          "jobAccept": "N"
        }
      ]
    }
  ],
  "message": "Success"
}

【问题讨论】:

  • 显示你尝试过的代码

标签: ios swift xcode swift5


【解决方案1】:

您可以使用quicktype 之类的服务来创建可编码类。作为起点,您应该阅读更多关于Codable Protocol

您可以使用以下代码来解析此 JSON:

import Foundation

// MARK: - Root
struct Root: Codable {
    let status: Int
    let data: [Datum]
    let message: String
}

// MARK: - Datum
struct Datum: Codable {
    let month: String
    let jobs: [Job]
}

// MARK: - Job
struct Job: Codable {
    let jobID: Int
    let jobTitle, jobDesc, jobDate, jobVenue: String
    let jobAccept: String

    enum CodingKeys: String, CodingKey {
        case jobID = "jobId"
        case jobTitle, jobDesc, jobDate, jobVenue, jobAccept
    }
}

您可以使用此代码将 JSON 转换为对象:

let root= try? JSONDecoder().decode(Root.self, from: jsonData)

【讨论】:

  • 您从哪里复制此代码?我对此非常好奇,因为这不是我第一次看到有人在答案中使用奇怪的类newJSONDecoder。
  • 我已经发布了您问题的答案:这些结构是由quicktype 网站自动生成的。您只需发布您的 JSON,它就会生成所有必要的类/结构来解码它。很有用。
  • 对不起,你是对的。这似乎是生成的代码中的错误。应该是JSONDecoder。
  • 好的,我明白了。我通常只生成结构而不生成其余代码,但现在我对其进行了测试,我发现 newJSONDecoder 实际上是由返回解码器的 quicktype 生成的函数。这也意味着它是 quicktype 生成可怕的try? 用于错误处理
猜你喜欢
  • 2021-07-31
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 2016-01-28
  • 2019-08-28
相关资源
最近更新 更多