2017-02-14 1 views
0

J'ai importé Alamofire et SwiftyJSON (dernières versions) et je veux juste essayer les appels d'API.En utilisant Alamofire et SwiftyJSON et il me renvoie null quand j'utilise json ["email"]?

ici est ce que je fais dans viewDidLoad:

url: String = "https://api.solvap.com" //this is not the real url of the api 

Alamofire.request(url, method: .get) 
     .validate() 
     .responseJSON { response in 
     switch response.result { 
     case .success(let value): 
      let json = JSON(value) 
      //this print statement prints the whole JSON list 
      print(json) 
      //this print statement just return null for some weird reason 
      print(json["name"]) 
     case .failure(let error): 
      print(error) 
     } 
    } 

Sortie de la console dans Xcode:

[ 
    { 
    "name" : "John", 
    "surname" : "Doe", 
    "password" : "54321", 
    "job" : "Developer", 
    "token" : "iw4lcsk7h8do3y6fuw5vvzefn" 
    } 
] 
null 

Toute pensée comment résoudre ce problème et pourquoi cela se produit?

+0

L'objet JSON analysable est un tableau de dictionnaires. Essayez d'imprimer 'print (json.first? [" Nom "])' – vfn

+0

@vfn J'ai reçu une erreur de 'print (json.first? [" Nom "])' Tapez 'JSON._Element' (alias '(Chaîne , JSON) ') n'a pas de membres de – Pavlos

+0

Voici en indice de la solution: 'Alamofire.request (url, méthode: .get) .validate() { .responseJSON réponse à commutateur response.result { cas .success : // supprimé la valeur de l'affaire .success (let value): let json = JSON (données: response.données!) si let name = json [0] ["nom"]. String { // Maintenant vous avez votre valeur impression (nom) } case .failure (laisser erreur): imprimer (erreur) } } ' – Pavlos

Répondre

0

Je compris cela .. Si la réponse API ressemble à ceci:

(
    { 
     "name" : "John", 
     "surname" : "Doe", 
     "password" : "54321", 
     "job" : "Developer", 
     "token" : "iw4lcsk7h8do3y6fuw5vvzefn" 
    } 
) 

Cela signifie que la réponse de l'API est faux et la meilleure façon est de fixer la réponse du Back-End et ne pas essayer de analyser les données d'une mauvaise réponse de l'API.

Il n'y a aucune raison de perdre du temps à essayer d'analyser les données d'une mauvaise réponse API.

La réponse correcte de l'API devrait ressembler à ceci:

{ 
    "name" : "John", 
    "surname" : "Doe", 
    "password" : "54321", 
    "job" : "Developer", 
    "token" : "iw4lcsk7h8do3y6fuw5vvzefn" 
}