【问题标题】:How to write a model struct if the keys of the object are different如果对象的键不同,如何编写模型结构
【发布时间】:2019-07-30 22:19:02
【问题描述】:

我正在尝试解码这个数据,但是密钥不同,所以我不确定如何设置一个可以捕获未知密钥的变量

这就是我想要实现的目标

struct Offer: Decodable {
    let creationDate: Double
    let description: String
    let imageUrl: String
    let phoneNumber: String
}

这是 JSON

{
  "-Ll3YgwlwuV0AbZSwhAK": {
    "creationDate": 1564518305.580168,
    "description": "Hehbs",
    "imageUrl": "https://firebasestorage.googleapis.com/",
    "phoneNumber": "458194954"
  },
  "-Ll3ZWpOxPvep66qzEK6": {
    "creationDate": 1564518522.191582,
    "description": "Jenner",
    "imageUrl": "https://firebasestorage.googleapis.com/",
    "phoneNumber": "51554"
  },
  "-Ll3jq39mEjHS0AsycEz": {
    "creationDate": 1564521488.6788402,
    "description": "Jwd\t\t",
    "imageUrl": "https://firebasestorage.googleapis.com/",
    "phoneNumber": "dwjd"
  },
  "-Ll3l2u_zqi1JLrJ_049": {
    "creationDate": 1564521807.552466,
    "description": "like",
    "imageUrl": "https://firebasestorage.googleapis.com/",
    "phoneNumber": "kkef"
  },
  "-Ll3lSVfdKGGtMMuTcDg": {
    "creationDate": 1564521912.391248,
    "description": "Mmm",
    "imageUrl": "https://firebasestorage.googleapis.com/",
    "phoneNumber": "mm"
  }
}

【问题讨论】:

标签: ios json swift model-view-controller struct


【解决方案1】:

您也可以使用以下方法对其进行解码:

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

对于它的价值,我倾向于将creationDate 设为Date 和将imageUrl 设为URL

struct Offer: Decodable {
    let creationDate: Date
    let description: String
    let imageUrl: URL
    let phoneNumber: String
}

然后您可以使用以下代码对其进行解码:

do {
    let decoder = JSONDecoder()
    decoder.dateDecodingStrategy = .secondsSince1970
    let dictionary = try decoder.decode([String: Offer].self, from: data)
    print(dictionary)
} catch {
    print(error)
}

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2014-05-02
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2021-05-28
    相关资源
    最近更新 更多