解析JSON并找到最接近匹配日期的元素



我有一个包含一些数据的JSON字符串。

i do 不是的类型已声明为匹配并使用动力学,因为在许多实例中进行了API调用,并且返回具有完全不同结构的JSON。

我要做的是在days的第一个元素中循环浏览entries的数组 - 并在DateTime处于当前日期时间密切匹配的条目。

我遇到的错误是:

microsoft.csharp.runtimebinder.runtimebinderexception:不能 隐式转换类型Newtonsoft.Json.Linq.JArray' to字符串'。一个 存在明确的转换(您是否缺少演员?)

我相信,需要使用动力学并通过合理复杂的数据结构导航,这是一些额外的复杂性。

这是我尝试过的。

dynamic windData = JsonConvert.DeserializeObject(resultWindAPI); //resultWindAPI is the JSON presented below. 
string windEntries = windData.forecasts.wind.days[0].entries;
dynamic windEntryData = JsonConvert.DeserializeObject(windEntries);
//find closest wind time to get most recent data
int min = int.MaxValue;
DateTime now = new DateTime();
dynamic currentWindEntry = windEntryData[0];
foreach(dynamic entry in windEntryData)
{
    DateTime thisDateTime = entry.dateTime;
    if (Math.Abs(thisDateTime.Ticks - now.Ticks) < min)
    {
        min = (int)thisDateTime.Ticks - (int)now.Ticks;
        currentWindEntry = entry;
    }
}
//Do something with the currentWindEntry 

这是我要解析的JSON的一个示例。

根据错误消息

string windEntries = windData.forecasts.wind.days[0].entries;

是问题。

您已经可以通过动态变量访问条目,然后将其分配。

dynamic windEntryData = windData.forecasts.wind.days[0].entries;

相关内容

  • 没有找到相关文章

最新更新