解码 Swift 中的小写和大写 JSON 键 4
Decode lowercase and uppercase JSON keys in Swift 4
我有以下代表 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 个小写的项目时(例如,而不是 ID
、LAST_DT_ADD
和 LAST_ID
,我有 id
, last_dt_add
和 last_id
), 它没有解码对象。我需要做什么?如何支持大写和小写?
您应该提供正确的版本作为 CodingKeys
枚举中的关联值。
enum CodingKeys: String, CodingKey {
case ID = "id"
case LAST_DT_ADD = "last_dt_add"
case LAST_ID = "last_id"
}
请注意,在 Swift 中,命名变量的约定是标准化的驼峰式命名规则,而不是 snake_case。
我有以下代表 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 个小写的项目时(例如,而不是 ID
、LAST_DT_ADD
和 LAST_ID
,我有 id
, last_dt_add
和 last_id
), 它没有解码对象。我需要做什么?如何支持大写和小写?
您应该提供正确的版本作为 CodingKeys
枚举中的关联值。
enum CodingKeys: String, CodingKey {
case ID = "id"
case LAST_DT_ADD = "last_dt_add"
case LAST_ID = "last_id"
}
请注意,在 Swift 中,命名变量的约定是标准化的驼峰式命名规则,而不是 snake_case。