微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

深入嵌套的JSON解码为Swift

如何解决深入嵌套的JSON解码为Swift

2个问题

  1. 如何获取特定项目的嵌套“关闭”值?是否要通过在一个结构内的一个结构内的结构来执行此操作,以复制编码结构。

  2. 如何将数字“ 1594647000”与CodingKey一起使用枚举?

{"example2":13}

解决方法

这有意义吗? 根据需要,您可能希望将items保留为字典,或者将其转换为数组。

let jsonString = """
{
    "items": {
        "1594647000": {
            "date": "13-07-2020","open": 388.720000000000027284841053187847137451171875,"high": 394.18999999999999772626324556767940521240234375,"low": 388.3500000000000227373675443232059478759765625,"close": 392.76999999999998181010596454143524169921875
        }
    }
}
"""

struct Item: Decodable {
  let open: Double
  let close: Double
}

struct ItemsList: Decodable {
  let items: [Item]

  private enum CodingKeys: String,CodingKey {
      case items
  }

  init(from decoder: Decoder) throws {
    let container = try decoder.container(keyedBy: CodingKeys.self)

    let dict = try container.decode([String: Item].self,forKey: .items)
    items = dict.map { $0.value }
  }
}

let itemsList = try JSONDecoder().decode(ItemsList.self,from: jsonString.data(using: .utf8)!)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。