2012-07-26 96 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