在 Swift 4 中解码小写和大写 JSON 键
Posted
技术标签:
【中文标题】在 Swift 4 中解码小写和大写 JSON 键【英文标题】:Decode lowercase and uppercase JSON keys in Swift 4 【发布时间】: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 项目时(例如,我有 id
、last_dt_add
和 last_id
,而不是 ID
、LAST_DT_ADD
和 LAST_ID
),它不是解码对象。我需要做什么?如何支持大写和小写?
【问题讨论】:
【参考方案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 不,不在一个编码键中。为此使用两个单独的编码键或编写自己的解码函数。以上是关于在 Swift 4 中解码小写和大写 JSON 键的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 4 中为 JSON 编写可解码,其中键是动态的?