У меня есть строка JSON, содержащая некоторые данные.
У меня нет типов, объявленных для соответствия, и я использую динамику, так как существует много, много случаев, когда выполняются вызовы API и возвращаются JSON с совершенно разными структурами.
То, что я пытаюсь сделать, это перебрать массив entries
в первом элементе days
и получить запись, в которой dateTime точно соответствует текущей дате и времени.
У меня ошибка:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: невозможно неявно преобразовать тип
Newtonsoft.Json.Linq.JArray' to
string. Существует явное преобразование (вам не хватает приведения?)
Я считаю, что есть некоторая дополнительная сложность, связанная с необходимостью использования динамики и навигации по достаточно сложной структуре данных.
Вот что я пробовал.
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, который я пытаюсь разобрать.
dynamic[] windEntryData = windEntries
с аналогичной ошибкой. - person Bejasc   schedule 22.09.2017string windEntries = windData.forecasts.wind.days[0].entries;
твоя проблема. сделай и этоdynamic
- person Nkosi   schedule 22.09.2017