2012-07-26 6 views
2

우리는 System.JSON을 사용하여 API 호출을 사용하고 있으며 데이터를 정렬하는 방법이없는 것처럼 보입니다. C# ASP.NET 4 ASP.NET MVC에서 실행JsonArray를 정렬하는 방법

3. 다음

밖으로 데이터 호출의 예이다 :

string requestURL = /*URL to the API*/; 
    WebRequest request = HttpWebRequest.Create(requestURL); 
    using (var response = request.GetResponse()) { 
     return JsonObject.Load(response.GetResponseStream()); 
    } 

이 함수는 JsonArray를 잡고 JsonValue를 반환 제가 정렬하려고하는 것입니다.

+0

'OrderBy'와 같은 LINQ 확장 방법을 사용할 수 없습니까? –

+0

그것이 문제가되는 곳입니다. System.Json 클래스는 그런 것 같지 않습니다. iComparable을 구현하지 않는 것에 관한 것. –

답변

1

JSON이 어떻게 보이고 어떤 속성으로 주문할지 표시하지 않았습니다. 다음 JSON이 있다고 가정 해 보겠습니다.

[ 
    { 
     "Id": 1, 
     "Text": "item 1" 
    }, 
    { 
     "Id": 2, 
     "Text": "item 2" 
    }, 
    { 
     "Id": 3, 
     "Text": "item 3" 
    }, 
    { 
     "Id": 4, 
     "Text": "item 4" 
    }, 
    { 
     "Id": 5, 
     "Text": "item 5" 
    } 
] 

ID 속성을 기준으로 내림차순으로 정렬하려고합니다. 예를 들면 다음과 같습니다.

class Program 
{ 
    static void Main(string[] args) 
    { 
     string requestURL = "/URL to the API/"; 
     WebRequest request = HttpWebRequest.Create(requestURL); 
     using (var response = request.GetResponse()) 
     { 
      var result = JsonArray.Load(response.GetResponseStream()); 
      var orderedResult = result.OrderByDescending(x => x.Value["Id"].ReadAs<int>()); 
      foreach (var item in orderedResult) 
      { 
       Console.WriteLine("{0} : {1}", item.Value["Id"], item.Value["Text"]); 
      } 
     } 
    } 
} 
+0

이 질문에 대한 답변 (Linq 함수)이 있지만 System.Json 클래스가 iComparable을 구현하지 않아서 어떤 순서로도 수행 할 수 없기 때문에 아무데도 갈 수 없습니다. –

+0

@BradWilkie, 예제에서 생성 한'orderedResult' 변수는 정렬 된 데이터를 포함합니다. 웹 서비스에서 소비 한 JSON 문자열에서 강력한 형식화 된 배열을 가져와야합니다. 제가 잘못했거나 어떻게 든 귀하의 요구 사항을 오해 한 경우 제발 정정하십시오. –

+0

아니, 내가하고 싶은 일에 정확히 들어 맞았다.하지만 JsonArray 유형은 주문 방법을 지원하지 않는 것 같다. 정렬을 시도 할 때마다 오류가 계속 발생합니다. –