首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Newtonsoft.Json过滤输出

Newtonsoft.Json过滤输出
EN

Stack Overflow用户
提问于 2019-04-24 03:11:23
回答 1查看 50关注 0票数 0

如何过滤输出(Console.WriteLine(statusCollection...)以仅在过去24小时内s.Service_name等于"cloud_networking"时显示结果(s.Begin日期格式为2018-05-19T04:39:59Z

代码语言:javascript
复制
class Program
{
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    //public static void Main()
    public static void Main(string[] args)
    {
        using (var webClient = new WebClient())
        {

            String rawJSON = webClient.DownloadString("https://status.cloud.google.com/incidents.json");
            List<Status> statusCollection = JsonConvert.DeserializeObject<List<Status>>(rawJSON);
            Console.WriteLine(statusCollection.Count + "Last Run:" + DateTime.Now.ToString("MM/dd/yyyy h:mm tt"));
            //Console.WriteLine(statusCollection.Count + " items");

            Console.WriteLine(string.Join("\n", statusCollection.Select(s => string.Format("{0} {1} ({2}) {3} - {4} - {5} updates",
                                                   s.Begin, s.Number, s.Severity, s.Service_name, s.External_desc, s.Updates.Count))));
            log.Info(DateTime.Now.ToString("\n MM/dd/yyyy h:mm tt"));
        }
    }
}

public class Status
{
    public string Begin { get; set; }
    public string Created { get; set; }
    public string End { get; set; }
    public string External_desc { get; set; }
    public string Modified { get; set; }
    [JsonProperty("most-recent-update")]
    public MRUpdateContainer Most_recent_update { get; set; }
    public int Number { get; set; }
    public bool Public { get; set; }
    public string Service_key { get; set; }
    public string Service_name { get; set; }
    public string Severity { get; set; }
    public List<Update> Updates { get; set; }
    public string Uri { get; set; }
}

public class MRUpdateContainer
{
    public string Created { get; set; }
    public string Modified { get; set; }
    public string Text { get; set; }
    public string When { get; set; }
}
public class Update
{
    public string Created { get; set; }
    public string Modified { get; set; }
    public string Text { get; set; }
    public string When { get; set; }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-24 03:21:40

(1)您可以将Begin属性类型更改为DateTime,以便更容易基于该属性类型进行过滤。DateTime的Json.Net can deserialize ISO8601日期:

代码语言:javascript
复制
public DateTime Begin { get; set; }

(2)反序列化采集后,您可以使用Linq .Where -operation对数据进行过滤,操作步骤如下:

代码语言:javascript
复制
DateTime start = DateTime.Now.AddHours(-24);
statusCollection = statusCollection.Where(r => r.Service_name == "cloud_networking" && r.Begin > start).ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55817937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档