J'ai le code suivant ici qui est le résultat d'une requête POST envoyée à phpMyAdmin. Le fichier JSON suivant est renvoyé par le serveur.
{"account:[{"login":"Nik","id":"0","consent":"0","surveyScore":"0","memoryScore":"0","towerScore":"0","tappingScore":"0"}]}
Maintenant, je parviens à récupérer correctement le JSON sur mon téléphone, mais j'ai du mal à le parser.
J'ai suivi le guide répertorié ici Exemple Json Xcode
Voici mon code jusqu'à présent:
public func sqlAccount(login: String, pass: String, model:userModel ) {
// REQUÊTE POST uniquement, voir le fichier php pour le service Web.
let loci = "http://IPAddressConcealed/"
let appended = loci + "account.php"
var request = URLRequest(url: URL(string: appended)!)
request.httpMethod = "POST"
let postString = "login=\(login)&pass=\(pass)"
request.httpBody = postString.data(using: .utf8)!
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let reponse = response {
print(reponse)
}
if let data = data {
//print(data)
do{
var accountJson: NSDictionary!
let json = try JSONSerialization.jsonObject(with: data, options: [])
accountJson = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? NSDictionary
print(json)
//obtention du tableau JSON account de la réponse
let account: NSArray = accountJson["account"] as! NSArray;
// ces deux lignes me posent problème
let login: String = account[0]["login"] as! String
let memoryScore: Int = account[0]["memoryScore"] as! Int
} catch {
print(error)
}
}
}
task.resume()
}`
Voici le résultat de la sortie dans le terminal xcode après avoir simplement imprimé les données JSON.
`{account = (
{
consent = 0;
id = 0;
login = Nik;
memoryScore = 0;
surveyScore = 0;
tappingScore = 0;
towerScore = 0;
}
); }`
Code PHP côté serveur:
fetch_object())
{
// Ajoute chaque ligne dans notre tableau de résultats
$tempArray = $row;
array_push($response['account'], $tempArray);
}
// Enfin, encode le tableau en JSON et affiche les résultats
printf(json_encode($response));
}
// Fermer les connexions
mysqli_close($con);
?>