2012-07-26 99 views
2

我們使用System.JSON來使用api調用,而且似乎沒有辦法對數據進行排序。如何排序JsonArray

在C#ASP.NET 4和ASP.NET MVC運行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

難道你不能使用LINQ擴展方法,比如'OrderBy'嗎? – 2012-07-26 22:23:26

+0

這是我遇到麻煩的地方。 System.Json類似乎不喜歡那樣。有關不實施iComparable。 – 2012-07-27 14:38:34

回答

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,因此無法進行任何排序。 – 2012-07-27 14:40:25

+0

@BradWilkie,我在示例中構造的'orderedResult'變量包含有序數據。這就是我需要做的第一件事:從Web服務中使用的JSON字符串中獲取強類型的有序數組。請糾正我,如果我錯了或以某種方式誤解了您的要求。 – 2012-07-27 14:54:27

+0

不,你完全正確地做我想做的事,但JsonArray類型似乎不支持順序方法。無論我嘗試做什麼,我都會收到錯誤。 – 2012-07-27 14:58:00