【问题标题】:Order of performing sorting on a big JSON object对大 JSON 对象执行排序的顺序
【发布时间】:2015-06-11 13:03:05
【问题描述】:

我有一个带有“票”列表的大 json 对象。架构如下所示

{ "Artist": "Artist1", "Tickets": [ { "Id": 1, "Attr2Array": [ { "Att41": 1, "Att42": "A", "Att43": null }, { "Att41": 1, "Att42": "A", "Att43": null }, ], . . . (more properties) "Price": "20", "Description": "I m a ticket" }, { "Id": 4, "Attr2Array": [ { "Att41": 1, "Att42": "A", "Att43": null }, { "Att41": 1, "Att42": "A", "Att43": null }, ], . . . . (more properties) "Price": "30", "Description": "I m a ticket" } ] }

列表中的每个项目都有大约 25-30 个属性(一些简单类型,而其他复杂数组作为嵌套对象)

我必须从 api 端点读取对象并仅提取“ID”和“描述”,但它们需要按“价格”排序,例如 int

我应该按什么顺序进行这个数据操作

  1. 我是否应该使用 json 对象,将其反序列化为仅具有这 2 个属性(我需要)的另一个对象,然后在“价格”上执行“asc”排序?

请注意,在我获得排序列表后,我必须将其转换回 json 列表,因为前端毕竟消耗了一个 json。

我不喜欢这种方法的是发生的序列化和反序列化循环

  1. 我首先对 json 对象执行排序(例如使用二进制/冒泡排序),然后使用该对象创建仅具有这 2 个属性的强类型(反序列化)对象,然后将其序列化回传递给前端

我不知道冒泡排序的性能如何,以及我是否会在处理大量数据时获得任何性能提升。

我还需要记住,此实现可以考虑其他属性,例如“availabilitydate”,因为在以后,此前端可能会添加一个过滤器,例如“availabilitdate”asc

非常感谢任何帮助

谢谢

【问题讨论】:

    标签: json sorting c#-4.0 serialization deserialization


    【解决方案1】:

    您可以使用 Microsoft System.Web.ExtensionsJavaScriptSerializer.DeserializeObject 反序列化您的 JSON 字符串(或文件)。

    首先,您必须有与 JSON 相关联的类。要创建类,请选择您的 JSON 示例数据,然后在 Visual Studio 中转到编辑/选择性粘贴/将 JSON 粘贴为类

    接下来,使用此示例将 JSON 字符串反序列化为类型化对象,并使用 Linq 按 Price 属性对所有门票进行排序。

    String json = System.IO.File.ReadAllText(@"C:\Data.json");
    var root = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Rootobject>(json);
    var sortedTickets = root.Tickets.OrderBy(t => t.Price);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 2018-02-13
      • 1970-01-01
      相关资源
      最近更新 更多