2016-06-02 3 views
0

이 객체를 가지고 있으며 customer_email 값을 기준으로 필터링하려고합니다. 예를 들어 고객 전자 메일이 [email protected] 인 커미션 만 반환하려고합니다. 이것은 응답이 어떻게 생겼는지에 대한 간단한 예입니다. 아래는 모든 데이터를 가져 오는 방법입니다. 나는 응답을받을 때값을 기준으로 JSON 필터링

public RootObject GetData(string customerEmail) 
{ 
    var data = new Commission(); 
    using (var httpClient = new HttpClient()) 
    { 
      var requestContent = JObject.FromObject(new 
      { 
       commission_id = data.id, 
       customer_email = customerEmail 

      }).ToString(); 

     ...... 

     RootObject response = JsonConvert.DeserializeObject<RootObject>(responseContent); 

     return response; 
    } 
} 

는 정보는 다음과 같습니다

{"response":{ 
    "code":"200", 
    "message":"OK: The request was successful. See response body for additional data.", 
    "data":{ 
     "commissions": 
     [{ 
     "commission_id":"12345", 
     "customer_email":"[email protected]" 
     }, 
     { 
     "commission_id":"67890", 
     "customer_email":"[email protected]" 
     }] 
+0

RootObject 클래스의 코드를 게시 할 수 있습니까? – Richard

답변

0

response에서 RootObject으로 직렬화 한 직후에 간단한 LINQ를 사용하여 얻을 수 있습니다.

return response 
     .Response.Data.Commissions 
     .Where(commission => commission.CustomerEmail == customerEmail); 
+0

Didnt는 그것이 그렇게 간단했다는 것을 깨닫는다, 고마워한다! – xyzcode

0

그런 다음 당신은 쉽게 그 목록의 내용을 필터링 할 람다 식을 사용할 수 있습니다.

return response.Response.Data.Commissions.Where(c => c.customerEmail==customerEmail); 

이 응답의 commissions 컬렉션 Commission의 인스턴스를 반환합니다.

이 솔루션의 부작용은 메서드의 반환 형식을 RootObject에서 IEnumerable<Commission>으로 변경하는 것입니다. 이는이 메소드의 호출자가 커미션 데이터 외에도 응답 오브젝트의 다른 데이터에 더 이상 액세스 할 수 없다는 것을 의미합니다.

관련 문제