2016-05-31 5 views
0

특정 JSON 응답을 얻고 싶습니다. 예를 들어, ID가 25와 26 인 배열에서 결과 (즉, 이름과 점수) 만 얻으면됩니다. WHERE 절이 신속하게 있습니까? 그게 도움이된다면 Alamofire와 SwiftyJSON을 사용하고 있습니다.JSON 응답의 특정 값을 식별하는 방법

지금 당장 제 코드는 모든 값을 가져 오지만 ID 25와 26의 결과 만 가져오고 싶습니다. 가능합니까?

내 코드 :

Alamofire.request(.GET, endPoint).validate() 
     .responseJSON { response in 

    switch response.result { 

    case .Success: 
      if let value = response.result.value { 
       let json = JSON(value) 
       for (_,subJson):(String, JSON) in json { 
        if let date = subJson["start_date"].string{ 
         self.date = date 
        } 
        if let building = subJson["building_name"].string{ 
         self.building = building 
        } 
        if let jobId = subJson["schedule_job_id"].int { 
         self.jobIdArray.append(jobId) 
        } 
        if let tasks = subJson["tasks"].array{ 
         for building in tasks { 
          Tasks.sharedInstance.datas = tasks 
          if let ratings = building["safety_ratings"].array{ 
           for submission in ratings { 
            if let score = submission["score"].string { 
             self.scoreArray.append(score) 
            } 
            if let ratingId = submission["safety_rating_id"].int { 
             self.ratingArray.append(ratingId) 
            } 
            if let submissionId = submission["submission_id"].int { 
             self.subIdArray.append(submissionId) 
            } 
           } 
          } 
         } 
        } 
       } 
       onCompletion() 
      } 
case .Failure(let error): 
     print("Request failed with error: \(error)") 
     onError?(error) 
    } 
} 

UPDATE

func getTask(onCompletion:() ->(), onError: ((NSError) ->())? = nil) { 

    guard let endPoint = Data.sharedInstance.weeklyEndpoint else { print("Empty endpoint"); return } 

    Alamofire.request(.GET, endPoint, encoding: .JSON) 
     .validate() 
     .responseJSON { response in 

     switch response.result { 

     case .Success: 
      if let value = response.result.value { 
       let json = JSON(value) 
       for (_,subJson):(String, JSON) in json { 
        if let date = subJson["start_date"].string{ 
         self.date = date 
        } 
        if let building = subJson["building_name"].string{ 
         self.building = building 
        } 
        if let jobId = subJson["schedule_job_id"].int { 
         self.ratingArray.append(jobId) 
        } 

        let IDsYouWant: [Int] = [18, 27] 

        let tasksYouWant = subJson["tasks"].arrayValue.filter {IDsYouWant.contains($0["id"].intValue)} 

        for task in tasksYouWant { 

         if let ratings = task["safety_ratings"].array{ 
          for submission in ratings { 

           if let score = submission["score"].string { 
            let scoreResult = Int(score) 
            self.ratingArray.append(scoreResult!) 
           } 

           if let ratingId = submission["safety_rating_id"].int { 
            self.ratingArray.append(ratingId) 
           } 

           if let submissionId = submission["submission_id"].int { 
            self.ratingArray.append(submissionId) 
           } 

          } 
         } 
        } 

        if let tasks = subJson["tasks"].array{ 
          Tasks.sharedInstance.datas = tasks 
        } 
       } 

       print(self.ratingArray) 
       onCompletion() 
      } 

     case .Failure(let error): 
      print("Request failed with error: \(error)") 
      onError?(error) 
     } 
    }  
} 

내가 taskYouWant를 인쇄 할 때 나는 하늘의 배열 ..

를 얻을이 내 GET에서 JSON 응답 https://codeshare.io/UqJMV

W 모자 내가 찾고있는 score, safety_rating_idsubmission_id x 값입니다. submission_id가 27

+0

JSON에서는 아니지만 일단 Objective-C 컬렉션 클래스로 구문 분석하면 몇 가지 옵션이 있습니다. – trojanfoe

+0

JSON의 실제 스 니펫을 포함시켜 주시겠습니까? 붙여 넣은 것은 유효하지 않습니다. 감사. – Moritz

+0

안녕하세요 @EricD 내 게시물을 JSON 응답 – noobdev

답변

0

입니다 예를 들어, 배열을 당겨하는 방법을 필터링 한 후 배열에 subJson [ "작업"] 주조 약 : 도움이

let IDsYouWant: [Int] = [25, 26] 
let tasksYouWant = subJson["tasks"].arrayValue.filter {IDsYouWant.contains($0["id"].intValue)} 

for task in tasksYouWant { 
    //process task 25 and 26 
} 

희망을!

+0

으로 업데이트했습니다. 안녕하세요 @ 66o 빈 배열이 나옵니다. 제발 도와 주시겠습니까? (업데이트 된 코드) – noobdev

+0

구문 분석하려는 JSON은 무엇입니까? 코드 셰어에 붙여 넣은 것과 모양이 다르고 작동시키기 위해 키를 적절한 값으로 업데이트해야합니다. – 66o

+0

혼란에 대한 사과 코드 셰어에서 JSON을 구문 분석하려고합니다. 내 값도 업데이트했습니다. 나는 단지 submission id 27 배열에 관심이있다. (My JSON이 나에게 배열을 몇 개 제공한다. 반영하기 위해 코드 쉐어를 수정했다.) – noobdev