Сопоставление объектов с корнем Json возвращает ноль

Мне нужно сопоставить следующий Json с AlamofireObjectMapper:

{
  "user": {
    "id": 2,
    "first_name": "Dealer",
    "last_name": "Seller",
    "email": "[email protected]",
    "authentication_token": "L6HzhZWdWhtxNwVkrsjY",
    "documents_uploaded": false,
    "type": "Dealer"
  }
}

Я написал следующую часть кода, но сопоставленный объект возвращает nil!

class SystemUser:Mappable{       
    func mapping(map: Map) {
        type <- map[SystemUserIdentifiers.UserType] //"type"
        firstName <- map[SystemUserIdentifiers.FirstName]
        lastName <- map[SystemUserIdentifiers.LastName]
        internalIdentifier <- map[SystemUserIdentifiers.InternalIdentifier]
        email <- map[SystemUserIdentifiers.Email]
        documentsUploaded <- map[SystemUserIdentifiers.DocumentsUploaded]
        authenticationToken <- map[SystemUserIdentifiers.AuthenticationToken]
    }
}

Вот отправка почтового запроса:

Alamofire.request(.POST, URL, parameters: parameters, encoding: .JSON).responseObject {
            (response: Response<SystemUser, NSError>) in

guard let user = response.result.value else{
                return
            }
print(user.authenticationToken)
}

Как правильно сопоставить корневой Json?


person Ahmed Lotfy    schedule 25.08.2016    source источник


Ответы (1)


Я думаю, вам придется сделать два отображаемых объекта; один для ответа и другой для пользователя; нравится

//Response
class ServerResponse:Mappable{
    var user: SystemUser?       
    func mapping(map: Map) {
        user <- map["user"]
    }
}

-

//User class
class SystemUser:Mappable{
    var type:String?
    var firstName:String?
    var lastName:String?
    // ... Further properties

    func mapping(map: Map) {
        type <- map["type"] //"type"
        firstName <- map["first_name"]
        lastName <- map["last_name"]
        // ... Further properties
    }
}

и сейчас

Alamofire.request(.POST, URL, parameters: parameters, encoding: .JSON).responseObject {
            (response: Response<ServerResponse, NSError>) in
    print(response.user?.authenticationToken) 

   //Do your work here


}

Другой вариант заключается в том, что вы просите бэкэнд-разработчика удалить этот пользовательский ключ и отправить данные в одном словаре.

person Shoaib    schedule 25.08.2016