C# 如何通过datetime元素在c中获取和存储json数据中的倒数第二个订单
当我期望一条记录是json数据的倒数第二条记录时,我收到了多条记录 有人对我可能做得不正确有什么建议吗 样本数据:C# 如何通过datetime元素在c中获取和存储json数据中的倒数第二个订单,c#,json,asp.net-mvc,entity-framework,linq,C#,Json,Asp.net Mvc,Entity Framework,Linq,当我期望一条记录是json数据的倒数第二条记录时,我收到了多条记录 有人对我可能做得不正确有什么建议吗 样本数据: { "timestamp":"2017-03-17T17:33:09.156Z", "dataFrame":"VGVtcDoyOC43MA==", "fcnt":318, "port":2, "rssi":-107, "snr":0.8, "sf_used":7, "id":1489771989156, "decrypted
{
"timestamp":"2017-03-17T17:33:09.156Z",
"dataFrame":"VGVtcDoyOC43MA==",
"fcnt":318,
"port":2,
"rssi":-107,
"snr":0.8,
"sf_used":7,
"id":1489771989156,
"decrypted":true
},
{
"timestamp":"2017-03-17T17:33:16.614Z",
"dataFrame":"SHVtOjQzLjA0",
"fcnt":319,
"port":2,
"rssi":-108,
"snr":2.8,
"sf_used":7,
"id":1489771996614,
"decrypted":true
}
代码:
上面的代码只返回多条记录,但我正在尝试获取每次运行此代码时返回的倒数第二条记录。我正在重写。根据评论,我认为您需要更像下面这样的东西,但这不是必需的:
List<PIRDetail> Pirs = Newtonsoft.Json.JsonConvert.DeserializeObject <List<PIRDetail>>(responseString);
var item = Pirs[Pirs.Count -2];
byte[] data = Convert.FromBase64String(item.dataFrame.ToString());
PIRDetailsViewModel binModel = new PIRDetailsViewModel();
binModel.deviceid = deviceID;
binModel.status = Convert.ToString(Encoding.UTF8.GetString(data).Substring(4));
binModel.UpdatedTime = TimeZoneInfo.ConvertTimeFromUtc(item.timestamp, TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")).ToString();
model.Add(binModel);
所以为了澄清,您需要获取第一条记录,其中dataFrame=VGVtcDoyOC43MA==?catch Exception Ex{}不要这样做:您正在隐藏软件问题。如果您没有任何有意义的方法来处理异常,请不要捕获它。我有几百个元素。在最后一个元素中,最后一个-1元素。这只是一个样本数据VGVtcDoyOC43MA==我需要哪个记录。它总是倒数第二?或者它有时需要处理是否是倒数第3个N吗?不,它将始终是倒数第二个唯一的顺序,降序时间vgvTcdoyoC43Ma==它意味着温度:28.70,作为我们的答案,我们在哪里得到这个值,我们正在存储。但我的要求是包含VGVtcDo的最后一条记录。因为实时温度值发生变化。此代码仍然提供正确的记录。您正在查找名为dataFrame的属性。所以,你只要抓住它。。。我会修改的。修改,我想如果我理解正确的话,那就是你想要的。如果没有,请告诉我。我想我理解你的意图,但可能是错的。我把它改成依赖于数据的一切都在If中。问题你是不是循环浏览所有这些记录,只为了找到倒数第二个?如果是这样,您根本不需要循环。你可以把它编入索引。。。基本上,如果您要将所有的binModel代码移动到if。。。只要去掉这个循环,取Pirs[Count-2]。[Variables]是的,我只想要倒数第二到最后一个。我需要删除每个循环吗。什么是高效的代码,你能编辑我的代码吗
List<PIRDetail> Pirs = Newtonsoft.Json.JsonConvert.DeserializeObject <List<PIRDetail>>(responseString);
var item = Pirs[Pirs.Count -2];
byte[] data = Convert.FromBase64String(item.dataFrame.ToString());
PIRDetailsViewModel binModel = new PIRDetailsViewModel();
binModel.deviceid = deviceID;
binModel.status = Convert.ToString(Encoding.UTF8.GetString(data).Substring(4));
binModel.UpdatedTime = TimeZoneInfo.ConvertTimeFromUtc(item.timestamp, TimeZoneInfo.FindSystemTimeZoneById("India Standard Time")).ToString();
model.Add(binModel);