Ошибка при попытке проанализировать json?

#json #swift #swift3 #alamofire

#json #swift #swift3 #alamofire

Вопрос:

Я пытаюсь проанализировать JSON, но это не работает. Я хочу получить id из JSON по URL, но он показывает мне нулевое значение.

  var names = [String]()
 var SearchURL = "http://ios.khothe.vn/web/gamecards/authenticate/user/dungphiau/pass/829d81d46bad96825dc52a6e1675aab0"
 typealias jsonStandard = [String : AnyObject]

 override func viewDidLoad() {
     super.viewDidLoad()
     // Do any additional setup after loading the view, typically from a nib.
     callAlamo(url: SearchURL)
 }

 func callAlamo(url : String)  {
     Alamofire.request(url).responseJSON(completionHandler:
     {
         responds in
         self.parseData(JsonData: responds.data!)
     })
 }

 func parseData(JsonData : Data)  {
     do{
         var readableJson = try JSONSerialization.jsonObject(with: JsonData, options: .mutableContainers) as! jsonStandard
         let tracks = readableJson["id"] as? jsonStandard
         print(tracks)
     } catch{
           print(error)
     }
 }
  

Комментарии:

1. Какое именно значение nil ?

2. я хочу разобрать значение «id» в URL и распечатать его

3. Опять же, какая именно строка показывает вам значение «null»?

4. пусть tracks = readableJson[«id»] как? Стандарт JSON

5. Все еще неясно. Является readableJson нулевым или равно tracks nil? Используйте отладчик. Посмотрите, каково каждое значение. Подтвердите, что readableJson на самом деле содержит ключ "id" .

Ответ №1:

Значение для ключа id String не [String:AnyObject] aka jsonStandard

 let tracks = readableJson["id"] as? String
  

Учтите, что в Swift 3 тип словаря JSON равен [String:Any]

 typealias jsonStandard = [String : Any]