Ios 如果对象的键不同,如何编写模型结构
我试图解码这些数据,但密钥不同,所以我不确定如何设置一个变量来捕获未知密钥 这就是我想要达到的目标Ios 如果对象的键不同,如何编写模型结构,ios,json,swift,model-view-controller,struct,Ios,Json,Swift,Model View Controller,Struct,我试图解码这些数据,但密钥不同,所以我不确定如何设置一个变量来捕获未知密钥 这就是我想要达到的目标 struct Offer: Decodable { let creationDate: Double let description: String let imageUrl: String let phoneNumber: String } 这就是JSON { "-Ll3YgwlwuV0AbZSwhAK": { "creationDate": 156
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"
}
}
您还可以使用以下方法对其进行解码:
let dictionary = try JSONDecoder().decode([String: Offer].self, from: data)
do {
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
let dictionary = try decoder.decode([String: Offer].self, from: data)
print(dictionary)
} catch {
print(error)
}
不管它值多少钱,我倾向于把
creationDate
aDate
和imageUrl
aURL
:
struct Offer: Decodable {
let creationDate: Date
let description: String
let imageUrl: URL
let phoneNumber: String
}
然后,您可以使用以下方法对其进行解码:
let dictionary = try JSONDecoder().decode([String: Offer].self, from: data)
do {
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
let dictionary = try decoder.decode([String: Offer].self, from: data)
print(dictionary)
} catch {
print(error)
}
您还可以使用以下方法对其进行解码:
let dictionary = try JSONDecoder().decode([String: Offer].self, from: data)
do {
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
let dictionary = try decoder.decode([String: Offer].self, from: data)
print(dictionary)
} catch {
print(error)
}
不管它值多少钱,我倾向于把
creationDate
aDate
和imageUrl
aURL
:
struct Offer: Decodable {
let creationDate: Date
let description: String
let imageUrl: URL
let phoneNumber: String
}
然后,您可以使用以下方法对其进行解码:
let dictionary = try JSONDecoder().decode([String: Offer].self, from: data)
do {
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .secondsSince1970
let dictionary = try decoder.decode([String: Offer].self, from: data)
print(dictionary)
} catch {
print(error)
}
JSON字典的键成为Swift
[OfferID:Offer]
字典的键可能与Swift[OfferID:Offer]
字典的键重复,或可能与Swift[OfferID:Offer]
字典的键重复