Как я могу декодировать этот JSON с Alamofire?

Я хочу напечатать только значение для ключа "User_number"

 [
   {
     "User_fullname": null,
     "User_sheba": null,
     "User_modifiedAT": "2019-01-31T18:37:02.716Z",
     "_id": "5c53404e91fc822c80e75d23",
     "User_number": "9385969339",
     "User_code": "45VPMND"
   }
 ]

2 ответа

Я полагаю, это какой-то JSON в Data формат

let data = Data("""
[ { "User_fullname": null, "User_sheba": null, "User_modifiedAT": "2019-01-31T18:37:02.716Z", "_id": "5c53404e91fc822c80e75d23", "User_number": "9385969339", "User_code": "45VPMND" } ]
""".utf8)

Один из способов использования SwiftyJSON библиотека, но это то, что я не предлагаю, так как вы можете использовать Codable,


Итак, сначала вам нужно пользовательскую структуру, соответствующую Decodable (обратите внимание, что эти CodingKeys здесь, чтобы изменить ключ объекта внутри json на имя свойства вашей структуры)

struct User: Decodable {

    let fullname, sheba: String? // these properties can be `nil`
    let modifiedAt, id, number, code: String // note that all your properties are actually `String` or `String?`

    enum CodingKeys: String, CodingKey {
        case fullname = "User_fullname"
        case sheba = "User_sheba"
        case modifiedAt = "User_modifiedAT"
        case id = "_id"
        case number = "User_number"
        case code = "User_code"
    }
}

затем расшифруйте ваш JSON с помощью JSONDecoder

do {
    let users = try JSONDecoder().decode([User].self, from: data)
} catch { print(error) }

Итак, теперь у вас есть Data декодируется как массив вашей пользовательской модели. Так что если вы хотите, вы можете просто убедиться, User И его number имущество

let user = users[0]
let number = user.number

Следующий код принимает Data и сохраняет "User_number" как Int

if let json = try? JSONSerialization.jsonObject(with: Data!, options: []) as! NSDictionary {
    let User_number= json["User_number"] as! Int
}
Другие вопросы по тегам