【问题标题】:Decode lowercase and uppercase JSON keys in Swift 4在 Swift 4 中解码小写和大写 JSON 键
【发布时间】:2018-01-31 09:49:06
【问题描述】:

我有以下表示 JSON 的结构:

struct Todo: Codable {
    let ID: Int?
    let LAST_DT_ADD: String?
    let LAST_ID:Int?
}

当我以同样的方式使用解码时:

let decoder = JSONDecoder()
do {
  let todo = try decoder.decode(Todo.self, from: responseData)
  completionHandler(todo, nil)
} catch {
  print("error trying to convert data to JSON")
  print(error)
  completionHandler(nil, error)
}

它可以正确解码,但是当我有小写 JSON 项目时(例如,我有 idlast_dt_addlast_id,而不是 IDLAST_DT_ADDLAST_ID),它不是解码对象。我需要做什么?如何支持大写和小写?

【问题讨论】:

    标签: swift swift4 jsondecoder


    【解决方案1】:

    您应该在 CodingKeys 枚举中提供正确的版本作为关联值。

    enum CodingKeys: String, CodingKey {
        case ID = "id"
        case LAST_DT_ADD = "last_dt_add"
        case LAST_ID = "last_id"
    }
    

    请注意,在 Swift 中,命名变量的约定是标准化的 camelCase 而不是 snake_case。

    【讨论】:

    • 当然,你是对的。但是当我有大写的键时?解码时可以支持大写和小写吗?
    • @Dmitry 不,不在一个编码键中。为此使用两个单独的编码键或编写自己的解码函数。
    猜你喜欢
    • 2018-02-17
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多