我有一个包含一些数据的JSON字符串。
我 not 声明了匹配的类型并且正在使用动态,因为有许多实例进行API调用并返回具有完全不同结构的JSON。
我要做的是在entries
的第一个元素中循环遍历days
数组 - 并获取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
Here is an example我试图解析的JSON。
答案 0 :(得分:1)
根据错误消息
string windEntries = windData.forecasts.wind.days[0].entries;
是问题。
您可以通过动态变量访问这些条目,然后再分配它。
dynamic windEntryData = windData.forecasts.wind.days[0].entries;