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": ""
}
]
}
答案 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();
}
}
输出:
答案 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不完整。请添加完整的输出,以便其他人可以提供更好的帮助。