【问题标题】:Swift 4 Decodable - array with objectsSwift 4 Decodable - 带有对象的数组
【发布时间】:2018-02-18 23:31:02
【问题描述】:

我正在使用一个与此非常相似的 API:

{
   "email": "hello@example.com",
   "settings": [
        {
            "setting_A": {
                "value": -65,
            }
        },
        {
            "setting_B": {
                "value": {
                    "b1": {
                        "val": 12,
                        "unit": "kg"
                    },
                    "b2": {
                        "val": 10,
                        "unit": "g"
                    }
                }
            }
        }
    ]
}

我一直在解码这个 JSON 结果,尤其是。 settings。有人可以帮我怎么做吗?

这是我目前所拥有的:

struct User: Decodable  {
  let email: String
  let settings: [Setting] // not sure how to do this :(
}

【问题讨论】:

  • 设置里面的键总是不变的吗?与特定键对应的值是否始终具有相同的形式?如果不知道,您是否知道所有可能的键和所有可能的值?
  • @DávidPásztor 是的,键和值始终是一致的。没有动态添加的键或值。
  • @ashokgelal 您可以在这里将您的 json 转换为模型类 app.quicktype.io/#l=swift
  • @PrashantTukadiya 哇!我希望我以前知道这个工具。只是为我节省了几个小时。非常感谢!
  • 欢迎 ????乐于助人

标签: json swift decodable


【解决方案1】:

花了几个小时后,我最终按照@PrashantTukadiya 的建议使用了https://app.quicktype.io/#l=swift,并在 5 分钟内完成了所有操作。我强烈建议您使用该工具来满足您的编码/解码需求。

【讨论】:

  • 我也推荐使用这个 Xcode 扩展:github.com/quicktype/quicktype-xcode
  • 本站在模型内部使用Data(contentsOf: url)从网络中获取数据,令人厌恶。否则,是的,这样的网站可能很有用,当然。
猜你喜欢
  • 2018-04-05
  • 2018-04-10
  • 2018-07-08
  • 2018-09-01
  • 1970-01-01
  • 2018-03-30
  • 2018-09-07
  • 2018-01-19
  • 1970-01-01
相关资源
最近更新 更多