【问题标题】:Codable Handle dynamic key at root根目录下的可编码句柄动态键
【发布时间】:2018-12-27 09:53:20
【问题描述】:

我已经看过几个类似的问题,但我有不同的 JSON

所以我的 JSON 如下所示

var json = """
{
"Array1": [
{
"FinancialYear": "17-18"

}],
"Array2": [
{
"FinancialYear": "17-18"
}]
}
"""

问题是 Array1Array2 键,它们似乎是动态的,它位于 ROOT 并且可能更像 Array3、Array4 等

我想使用 Codable,但由于根 (Array1,Array2) 处的动态键,我无法摆脱它。

这是我尝试过但不起作用的结构

struct CodableJSON: Codable {
    var response:[String:[ArrayInside]]
    enum CodingKeys: String, CodingKey   {
        case response = "What should I write here ?" // What should be here ? 
    }

}

【问题讨论】:

  • 我认为这是不可能的。你必须改变结构
  • 你检查这个帖子的答案了吗:stackoverflow.com/questions/50713638/…
  • @emrepun 是的,我已经看到了,但是如果您观察到 periods 是根密钥,那么这没有问题,但我有动态根密钥
  • @Tobi 谢谢评论,不能确定。关于那个。我不想在将来为密钥的变化而烦恼。所以我正在寻找可以在所有情况下都可以工作的通用解决方案,因为我接受了答案。

标签: ios swift codable


【解决方案1】:

在这种情况下,只声明 ArrayInside 结构

struct ArrayInside: Decodable {
   ...
}

并将根对象解码为字典

let result = try JSONDecoder().decode([String:[ArrayInside]].self, from: data)

【讨论】:

  • 是的,应该可以!我已经用很长的路线修复了它,谢谢你总是建议最好的
猜你喜欢
  • 2011-09-04
  • 1970-01-01
  • 2015-04-05
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 2010-11-30
  • 2020-01-23
  • 2020-03-16
相关资源
最近更新 更多