Я должен получить данные JSON с указанием полезной нагрузки, которую мне нужно передать URL-адресу. Это будет выглядеть так:
{
"token": "string",
"body": {
"token": "another string",
"intValue": 1,
"somethingElse": "another string"
}
}
Я знаю, что свойства body всегда будут либо строкой, либо числом. Но я не знаю, какой ключ будет в паре с допустимой строкой или целым числом.
Затем мне нужно отправить это тело с помощью Alamofire, что я делал следующим образом:
// parsing the data received with the Codable:
struct NotificationDetails: Codable {
let token: String
let body: [String:String]?
let
init (token: String) {
self.token = token
self.body = nil
}
init (token: String, body: [String:String]) {
self.token = token
self.body = body
}
}
Обратите внимание, что я не могу просто использовать удобный тип параметров Alamofire, например:
struct NotificationDetails: Codable {
let token: String
let body: Parameters?
init (token: String) {
self.token = token
self.body = nil
}
init (token: String, body: Parameters) {
self.token = token
self.body = body
}
}
потому что это не кодируется, как и AnyObject.
// then elsewhere, using that data
guard let bodyJSON = localNotificationDetails.body else {
callback()
return
}
AF.request(url, method:method, parameters: bodyJSON).responseJSON(queue: queue) { response in
но теперь, когда я вижу, что некоторые из моих данных будут числовыми, а не строковыми, мне интересно, как я могу это сделать сейчас?