【问题标题】:Can you help me with Codable error in Alamofire response?你能帮我解决 Alamofire 响应中的 Codable 错误吗?
【发布时间】:2018-12-27 02:51:56
【问题描述】:

我最近遇到了使用 Codable 解析响应的问题。我正在将旧应用重写为 Swift。

我发现了问题。例如,我在服务器上有此响应:

{ "object": { "key1": "key" "key2": "key" "key3": "key" } }

我调用 Alamofire 请求以获得响应。

我使用 $0.responseJSON 将它的响应解码为 JSON。当我打印它时,我在控制台中有这个:

{ object: { key1: "key" "key2": "key" key3: "key" } }

当我尝试对此响应使用 Codable 时。它失败了,它找不到所需的值。 基本上,它可以解码“key2”键。我认为它与配额有关,因为我在 JSON 中使用不同的键进行测试。

能否告诉我在应用程序方面要更改哪些内容?

很抱歉这个简单的概述。

【问题讨论】:

  • 你能提供一个minimal reproducible example吗?你应该展示你的Codable 类。
  • 当您编辑以提供 minimal reproducible example 时,请同时将您的标题编辑为有意义的内容。 你能帮帮我吗 没有用 - 很明显你需要帮助,否则你不会在这里发帖。您的标题应该描述一个问题或提出一个问题,以供未来正在扫描搜索结果列表的读者使用。您当前的标题只是重复请求帮助后标签中已有的信息。
  • @redak105 请检查您的 key1 和 key3 类型。它应该是string 类型。我可以猜到你的应用需要字符串。

标签: json swift parsing alamofire codable


【解决方案1】:

您可以在其上创建两个 Codable 结构或 Codable 类。一个用于 Root 对象,第二个用于您的 Object。

如下是我的课程供您回复。

根类:

class RootClass: Codable {
    var object: Object?
}

对象类:

class Object: Codable {
    var key1 : String?
    var key2 : String?
    var key3 : String?
}

所以,现在在您的数据响应中,您可以这样做:

do {
    // Here data is the data you get from response.
    let root = try JSONDecoder().decode(RootClass.self, from: data)
} catch {
    print(error)
}

我建议您验证您的 JSON,它必须是这样的:

{
    "object": {
        "key1": "key",
        "key2": "key",
        "key3": "key"
    }
}

希望这对你有用。

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多