我有一个包含一些数据的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;