2017-02-08 7 views
1

В настоящее время изучает Swift и я новичок в анализе json. Я пытаюсь разобрать json, используя alamofire, используя swift 3. Однако Im не получил никакого ответа. Как получить значение параметра1 или параметра 2, которые были вложены? Мой JSON выглядит следующим образом:Невозможно разобрать json, используя alamofire, используя закрытие

{ "data":{ 
    "level1":{ 
    "level2":{ 
     "parameter1":"000000", 
     "parameter2":"00/00/00 00:00:00", 
     "parameter3":"00.0", 
    } 

Мой быстры код выглядит так,

func downloadDataDetails(completed: @escaping DownloadComplete) { 
    //Get data from URL 
    Alamofire.request("MY_URL").responseJSON { response in 
     let result = response.result 

     if let dict = result.value as? Dictionary<String , AnyObject> { 
      if let data = dict["data"] as? String { 
       if let level1 = dict["level1"] as? String { 
        if let level2 = dict["level2"] as? String? { 
         self._myValue = level2 
        } 
       } 
      } 
     } 
     completed() 
    } 

ответ

1

Я рекомендую вам, что использовать SwiftJson (https://cocoapods.org/pods/SwiftyJSON)

, если вам нужно, чтобы подтвердить, что-то есть ты может использовать .exist() (Возврат булева)

func test() { 
     let json: JSON = [ "data":[ 
      "level1":[ 
       "level2":[ 
        "parameter1":"000000", 
        "parameter2":"00/00/00 00:00:00", 
        "parameter3":"00.0" 
       ] 
      ] 
      ] 
      ] 
      print(json) //Create a breakpoint here 
    } 

Если у вас есть этот JSON, и вы должны знать, существуют ли параметр1:

(Поставьте точку останова в печати (JSON))

(В консоли) (lldb) po json["data"]["level1"]["level2"]["parameter1"].exists() // response true

В код будет:

if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

     } 

Если вам нужно получить значение будет:

if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

      let parameter1 = json["data"]["level1"]["level2"]["parameter1"] 
      print(parameter1) 
     } 

Полный пример:

func test() { 
     let json: JSON = [ "data":[ 
      "level1":[ 
       "level2":[ 
        "parameter1":"000000", 
        "parameter2":"00/00/00 00:00:00", 
        "parameter3":"00.0" 
       ] 
      ] 
      ] 
      ] 
     if json["data"]["level1"]["level2"]["parameter1"].exists(){ 

      let parameter1 = json["data"]["level1"]["level2"]["parameter1"] 
      print(parameter1) 
     } 
      print(json["parameter1"]) 
    } 

Журнал консоли:

000000 
{ 
    "data" : { 
    "level1" : { 
     "level2" : { 
     "parameter1" : "000000", 
     "parameter3" : "00.0", 
     "parameter2" : "00\/00\/00 00:00:00" 
     } 
    } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^