【问题标题】:Swift: Decode json response [closed]Swift:解码 json 响应 [关闭]
【发布时间】:2021-08-12 07:39:51
【问题描述】:

我有一个格式如下的后端响应:

{
  "Items": [
    {
      "Id": "blabla",
      "Text": "blabla",
      "Description": "blabla"
    },
    {
      "Id": "blabla",
      "Text": "blabla",
      "Description": "blabla"
    }]
}

哪种是直接解码数组的最佳 Swift 方法?

目前我有一个响应结构,但我还必须考虑“Items”键,它对项目没有任何业务逻辑含义。

struct SearchResult: Decodable {
    
    let Id: String
    let Text: String
    let Description: String
}

【问题讨论】:

  • 是什么让一种方法成为最好的方法?并展示你的尝试。

标签: json swift decode


【解决方案1】:

您的 JSON 在数组末尾缺少尾随 ]。

除此之外,您只需要一个包装器即可为您提供Items 数组。例如,这可以正常工作:

let jsonData = """
{
  "Items": [
    {
      "Id": "blabla",
      "Text": "blabla",
      "Description": "blabla"
    },
    {
      "Id": "blabla",
      "Text": "blabla",
      "Description": "blabla"
    }
    ]
}
""".data(using: .utf8)!

struct ResultWrapper: Decodable {
    var Items : [SearchResult]
}

struct SearchResult: Decodable {
    
    let Id: String
    let Text: String
    let Description: String
}

do {
    let results = try JSONDecoder().decode(ResultWrapper.self, from: jsonData)
    print(results.Items) //this is your array
} catch {
    print(error)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多