2017-02-08 8 views
1

현재 학습 속도가 빠르고 json을 파싱하기가 쉽습니다. 신속한 3을 사용하여 alamofire를 사용하여 json을 구문 분석하려고합니다. 그러나 어떤 응답도받지 못하고 있습니다. 중첩 된 parameter1 또는 parameter2의 값을 어떻게 얻어야합니까? 내 JSON은 다음과 같습니다 : 당신은 당신이 존재하는 것을 확인해야하는 경우클로저를 사용하여 alamofire를 사용하여 json을 구문 분석 할 수 없습니다.

내 SWIFT 코드는 다음과 같습니다
{ "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을 가지고 있고 매개가있는 경우 알 필요가있는 경우 : (콘솔에서) ((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) 
     } 
,691 363,210

완벽한 예 : 콘솔 로그

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" 
     } 
    } 
    } 
} 
관련 문제