簡體   English   中英

如何使用C#linq查詢獲取“開始”項目值?

[英]how to get “start” item value using C# linq query?

[{"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獲取起始項值?

給出以下具體類:

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));

使用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

似乎您想將json字符串反序列化為C# class

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

jsonString是您在問題中提到的json數據。 然后,您可以在課程上使用linq。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM