Попытка разобрать JSON в быстром, но не работает

Я пытаюсь проанализировать некоторые JSON, это то, что он возвращает, когда я непосредственно перейти к URL:

[{"Password":"whatever1"}]

Мой код может правильно получать данные (когда я отлаживал переменную «data», указанную выше JSON), однако при попытке его проанализировать не получится. Я думаю, что это может быть связано с квадратными скобками, потому что я анализировал другие JSON без квадратных скобок, и это работает хорошо.

Вот мой код:

func SignIn (username: String, password: String, completion: @escaping (Bool)->())
{
let url = URL(string: "http://<myIP>/API/SignIn.php?username=\(username)");

let task = URLSession.shared.dataTask(with: url!)
{ (data, response, error) in
if let data = data
{
do
{
// Convert the data to JSON
let jsonSerialized = try JSONSerialization.jsonObject(with: data, options: []) as? [String : Any]

//  print( jsonSerialized)
if let json = jsonSerialized, let result = json["Password"]
{
print(result)
if (String(describing: result) == password)
{
completion(true)
}
else
{
completion(false)
}
// TODO: password is wrong,
// TODO: username is wrong
// TODO: else if timeout
}
}
catch let error as NSError {
print(error.localizedDescription)
completion(false)
}
}
else if let error = error
{
print(error.localizedDescription)
completion(false)
}
}
task.resume()

}

0

Решение

Перепишите код на:

let jsonSerialized = try JSONSerialization.jsonObject(with: data, options: []) as? [[String : Any]]

Это необходимо, так как ваш ответ JSON представляет собой массив словарей, как уже упоминалось другими.

Получите доступ к результату, используя:

let result = json.first["Password"]
2

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

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

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