Swift 3 проблемы Разбор ответа JSON

Я новичок в Swift, но я приводил несколько примеров, например, как создать приложение для входа в систему, отправив поля имени пользователя и пароля в файл php и получив ответ json.

Когда я печатаю свою responseString, я получаю:

[{ «USERID»: 1, «имя пользователя»: «Rodrigo», «пароль»: «minhoca», «имя_группы»: «пара»}]

Но когда я пытаюсь разобрать json, я никогда не могу установить переменную username, потому что никогда не попадаю в эту часть кода, я просто получаю «здесь»

Спасибо за помощь

func sendLoginInfo(username: String, password: String) -> String{
if let url = URL(string: "myphpurl"){
let request = NSMutableURLRequest(url:url)
request.httpMethod = "POST";// Compose a query string
let postString = "?username=\(myUsername)&password=\(myPassword)"request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with:request as URLRequest){
data, response, error in

if error != nil{
print("1\(error)")
}
else{
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("response string = \(responseString!)")
}

do {

if let convertedJsonIntoDict = try JSONSerialization.jsonObject(with: data!, options: []) as? NSDictionary {

// Print out dictionary
print(convertedJsonIntoDict)

// Get value by key
let firstNameValue = convertedJsonIntoDict["username"] as? String
print("here = \(firstNameValue!)")

}
else{
print("here")
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
task.resume()
}
return ""}

1

Решение

Измените NSDictionary на NSArray в вашем коде, потому что вы получаете массив и пытаетесь преобразовать его в диктон:

 if let convertedJson = try JSONSerialization.jsonObject(with: data!, options: []) as? NSArray

получить объект с индексом 0, который даст вам диктатор & тогда вы можете получить имя пользователя

Итоговый код будет таким:

func sendLoginInfo(username: String, password: String) -> String{
if let url = URL(string: "myphpurl"){
let request = NSMutableURLRequest(url:url)
request.httpMethod = "POST";// Compose a query string
let postString = "?username=\(myUsername)&password=\(myPassword)"request.httpBody = postString.data(using: String.Encoding.utf8)
let task = URLSession.shared.dataTask(with:request as URLRequest){
data, response, error in

if error != nil{
print("1\(error)")
}
else{
let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
print("response string = \(responseString!)")
}

do {

if let convertedJsonIntoDict = try JSONSerialization.jsonObject(with: data!, options: []) as? NSArray {

// Print out dictionary
print(convertedJsonIntoDict)

// Get value by key
let firstNameValue = (convertedJsonIntoDict[0] as! NSDictionary)["username"] as? String
print("here = \(firstNameValue!)")

}
else{
print("here")
}
} catch let error as NSError {
print(error.localizedDescription)
}
}
task.resume()
}
return ""}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]