代码之家  ›  专栏  ›  技术社区  ›  Bejasc

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

  •  1
  • Bejasc  · 技术社区  · 7 年前

    我愿意 将类型声明为匹配,并使用动态,因为有很多实例进行API调用,并返回具有完全不同结构的JSON。

    我要做的是循环遍历 entries days -并获取dateTime与当前日期时间紧密匹配的条目。

    微软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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Nkosi    7 年前

    根据错误消息

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

    在此之前,您已经可以通过动态变量访问条目,因此只需分配它即可。

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