【发布时间】:2013-04-18 12:59:46
【问题描述】:
我有一个 json 数组。元素格式可能如下:
{
"CKey": "S2_123_45_20130416105655",
"TimeOfCall": "2013-04-17T06:00:00-04:00",
"DestinationNumber": "123456789",
"CallType": "X",
"CardNumber": ""
}
数组中有很多元素,我只想要24小时内TimeOfCall(DateTime format)的最新三个订单。它们可能什么都不是,也可能是 1,2。最大值为 3。
原来我想用几个字典来存储和按值排序但是太复杂了。
更新:
此 json 数组来自 C# 代码的 json 字符串:
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<CallDataDTO>));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(response4.Content.ReadAsStringAsync().Result));
calls = (List<CallDataDTO>)ser.ReadObject(ms); // dynamic
jsonStr4 = _dynamicConvert.DynamicToString(calls);// convert dynamic to string
jsonArray4 = JArray.Parse(jsonStr4); // convert string to a json array.
更新 2:
?jsonArray4
{[
{
"CKey": "P2_123_23_20130416105655",
"TimeOfCall": "2013-04-17T06:00:00-04:00",
"DestinationNumber": "1234567890",
"CallType": "DEBIT",
"CardNumber": ""
},
{
"CKey": "P5_123_105_20130412154035",
"TimeOfCall": "2013-04-17T07:00:00-04:00",
"DestinationNumber": "1234567890",
"CallType": "DEBIT",
"CardNumber": ""
},
{
"CKey": "P5_123_114_20130412154000",
"TimeOfCall": "2013-04-07T08:00:00-04:00",
"DestinationNumber": "1234567890",
"CallType": "DEBIT",
"CardNumber": ""
}
]}
base {Newtonsoft.Json.Linq.JContainer}: {[
{
"CKey": "P2_123_23_20130416105655",
"TimeOfCall": "2013-04-17T06:00:00-04:00",
"DestinationNumber": "1234567890",
"CallType": "DEBIT",
"CardNumber": ""
},
{
"CKey": "P5_123_105_20130412154035",
"TimeOfCall": "2013-04-17T07:00:00-04:00",
"DestinationNumber": "1234567890",
"CallType": "DEBIT",
"CardNumber": ""
},
{
"CKey": "P5_123_114_20130412154000",
"TimeOfCall": "2013-04-07T08:00:00-04:00",
"DestinationNumber": "1234567890",
"CallType": "DEBIT",
"CardNumber": ""
}
]}
Type: Array
【问题讨论】:
-
您希望多久执行一次此操作?如果不频繁,那么只需对数组进行排序并选择前 3 个。否则,请向我们提供有关您的数据结构及其使用方式的更多信息。
-
很少这样做,我不知道如何对整个对象进行排序。我应该创建字典吗?
-
这是一个对象数组吗?还是 JSON 文档?你的数据结构是什么?
-
查看我的更新,可能是我将字符串转换为 json 数组的方法错误。
-
同时发布整个 Json 文本(整个数组,而不仅仅是一个项目)