【问题标题】:how to get "start" item value using C# linq query?如何使用 C# linq 查询获取“开始”项目值?
【发布时间】:2016-01-25 04:57:53
【问题描述】:
[{"service":"xxx",
    "processes":
    [
        {
            "name":"tomcat",
            "command":{
                "start": "/server/tomcat01/bin/tomcat01.sh start",
                "stop": "/server/tomcat01/bin/tomcat01.sh stop",
                "restart": "/server/tomcat01/bin/tomcat01.sh restart",
            }       
        }
    ]
}]

如何使用 c# linq 获取起始项值?

【问题讨论】:

    标签: c# json list json.net


    【解决方案1】:

    给定以下具体类:

    public class Command
    {
        public string start { get; set; }
        public string stop { get; set; }
        public string restart { get; set; }
    }
    
    public class Process
    {
        public string name { get; set; }
        public Command command { get; set; }
    }
    
    public class Services
    {
        public string service { get; set; }
        public List<Process> processes { get; set; }
    }
    

    您可以反序列化 json 并检索所有开头的列表:

    var json = @"[{""service"":""xxx"", ""processes"": [{""name"":""tomcat"", ""command"":{""start"":""/server/tomcat01/bin/tomcat01.shstart"", ""stop"":""/server/tomcat01/bin/tomcat01.shstop"", ""restart"":""/server/tomcat01/bin/tomcat01.shrestart"", } } ] }]";
    var deserialized = JsonConvert.DeserializeObject<List<Services>>(json);
    var starts = deserialized.Select(x => x.processes.Select(p => p.command?.start));
    

    【讨论】:

      【解决方案2】:

      使用 Json.Net LINQ-to-JSON API,您可以这样做:

      string command = JToken.Parse(json)
          .SelectMany(jo => jo.SelectToken("processes"))
          .Select(jo => (string)jo.SelectToken("command.start"))
          .FirstOrDefault();
      

      ...根据您的 JSON 输入返回 /server/tomcat01/bin/tomcat01.sh start

      小提琴:https://dotnetfiddle.net/Ft3q2C

      【讨论】:

        【解决方案3】:

        您似乎想将您的 json 字符串反序列化为C# class

        JavaScriptSerializer jss= new JavaScriptSerializer();
        CustomClass tempClass = jss.Deserialize<CustomClass>(jsonString); 
        

        jsonString 是您在问题中提到的json 数据。然后你可以在你的类上使用 linq。

        【讨论】:

          猜你喜欢
          • 2020-12-31
          • 2021-08-19
          • 2023-04-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多