从网站收到的JSON.net过滤器存储库

时间:2018-10-04 05:58:46

标签: c# json.net restsharp

Hello Stackoverflow社区, 最近,我进入了C#和JSON.net,我的任务是过滤从网站收到的存储库。我正在使用Crucible API。

client.Authenticator = new HttpBasicAuthenticator(User, Password);
var request = new RestRequest("", Method.GET);
Console.Clear();

client.ExecuteAsync(request, response => {
    Console.WriteLine(response.Content);
});

Console.Read();

我如何过滤掉我在控制台应用程序中收到的存储库的displayNames之外的所有内容?当前输出如下:

{
    "repoData": [{
            "name": "Example",
            "displayName": "Example",
            "type": "git",
            "enabled": true,
            "available": true,
            "location": "Example.com",
            "path": ""
        }
    ]
}

2 个答案:

答案 0 :(得分:1)

为您的json创建快速类型

public class RepoData
{
    public string name { get; set; }
    public string displayName { get; set; }
    public string type { get; set; }
    public bool enabled { get; set; }
    public bool available { get; set; }
    public string location { get; set; }
    public string path { get; set; }
}

public class RootObject4
{
    public List<RepoData> repoData { get; set; }
}

在这里我创建一个控制台应用程序供您演示

class Program
{
    static void Main(string[] args)
    {
        var json = @"{'repoData':[{'name':'Example','displayName':'Example1','type':'git','enabled':true,'available':true,'location':'Example.com','path':''}, {'name':'Example','displayName':'Example2','type':'git','enabled':true,'available':true,'location':'Example.com','path':''}]}";

        RootObject4 rootObject4 = JsonConvert.DeserializeObject<RootObject4>(json);

        List<string> displayNames = new List<string>();

        foreach (var item in rootObject4.repoData)
        {
            displayNames.Add(item.displayName);
        }

        displayNames.ForEach(x => Console.WriteLine(x));

        Console.ReadLine();
    }
}

替代::如果您不想创建任何类,那么JObject将更好地处理json,并通过下面的代码示例控制台应用程序提取displayName值。

class Program
{
    static void Main(string[] args)
    {
        var json = @"{'repoData':[{'name':'Example','displayName':'Example1','type':'git','enabled':true,'available':true,'location':'Example.com','path':''}, {'name':'Example','displayName':'Example2','type':'git','enabled':true,'available':true,'location':'Example.com','path':''}]}";

        JObject jObject = JObject.Parse(json);

        var repoData = jObject["repoData"];

        var displayNames = repoData.Select(x => x["displayName"]).Values().ToList();

        displayNames.ForEach(x => Console.WriteLine(x));

        Console.ReadLine();
    }
}

输出:

enter image description here

答案 1 :(得分:0)

您可以使用JsonConvert.DeserializeObject。下面是示例

https://www.newtonsoft.com/json/help/html/DeserializeObject.htm

Using JsonConvert.DeserializeObject to deserialize Json to a C# POCO class

顺便说一句,您的JSON不完整。请添加完整的输出,以便其他人可以提供更好的帮助。