Как получить код Swift для чтения определенной части информации из файла JSON - PullRequest
0 голосов
/ 27 июня 2018

Я пытаюсь прочитать данные для «Имя» в файле JSON, который я размещаю с помощью Swift, и мне кажется, что я могу читать только весь файл JSON и не могу выбрать конкретные данные. Мой файл JSON содержит это:

[{"Email":"Admin@admin.com","Password":"password","Name":"Admin"}]

Код swift, который я использую, таков:

override func viewDidLoad() {
    super.viewDidLoad()

    //to get data from external DB

    let url = URL(string: "http://localhost/Projects/Test_mobileAPI/test_userInfo.php?email=Admin@admin.com")

    let task = URLSession.shared.dataTask(with: url!) { (data, response, error) in
        if error != nil{
            print("Error Occured")
        }
        else{
            print("Okie")
            if let content = data {
                do{
                    //Array
                    let myJson = try JSONSerialization.jsonObject(with: content, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
                    print("this part works")
                    print(myJson)
                    if let diction = myJson as? NSDictionary
                    {
                        if let name = myJson["Name"]{
                            print(name as Any)
                        }

                    }
                }
                catch{
                    print(error)
                }
            }
        }
    }
    task.resume()

}

Вывод, который я продолжаю получать, таков:

Okie
this part works
(
        {
        Email = "Admin@admin.com";
        Name = Admin;
        Password = password;
    }
)

Но я не получаю только значение для «Имя». Может ли кто-нибудь помочь мне получить значение для «Имя» (т.е. «Админ»)

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Проблема в том, что JSON, который вы получаете обратно , не словарь, это массив из одного элемента со словарем в нем. Итак, когда вы делаете

if let diction = myJson as? NSDictionary

объект myJson не проходит приведение к NSDictionary. Если вы сначала развернете массив, то сможете ссылаться на словарь и выбирать любые ключевые значения, которые вы хотите:

                if let array = myJson as? NSArray
                {
                     if let myDict = array[0] as? NSDictionary
                     {
                         if let name = myDict ["Name"]{
                             print(name as Any)
                         }
                      }
                }
0 голосов
/ 27 июня 2018

Можете ли вы попробовать

if  let myJson = try JSONSerialization.jsonObject(with: content) as? [[String:Any]] {
   if let first = myJson.first {
      print(first["Name"])
   }
}                  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...