我目前正在设计一个以 JSON 形式接收数据的机器人,将其反序列化为数组后,我尝试搜索信息,这就是问题所在。
用于反序列化的项目信息类
namespace InfoClass
{
public class ProjectInfo
{
public int Id { get; set; }
public string companyName { get; set; }
public string projectName { get; set; }
public string clientName { get; set; }
public string status { get; set; }
public int sprintPhase { get; set; }
}
}
我的主要 Json 阅读器类
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InfoClass
{
public class TestInfo
{
string json;
public TestInfo()
{
if (json == null)
InitializeJson();
}
private void InitializeJson()
{
json = @"{'CompanyData':[{id : 1 , companyName : 'Company1', projectName : 'TestProject1', clientName : 'TestClient1', sprintPhase : 2, status : 'Ongoing'},
{id : 2 , companyName : 'Company2', projectName : 'TestProject2', clientName : 'TestClient2', sprintPhase : 1 , status : 'Waiting on Designs'},
{id : 3 , companyName : 'Company3', projectName : 'TestProject3', clientName : 'TestClient3', sprintPhase : 5, status : 'Live'}]}";
}
public string GetStatus()
{
string status = "";
ProjectInfo[] jsonArray = JsonConvert.DeserializeObject<ProjectInfo[]>(json);
foreach (var companies in jsonArray)
{
foreach (var company in companies.projectName)
{
if (company.Equals("TestProject3"))
{
status = "found";
}
else
{
status = "not found";
}
}
}
return status;
}
}
}
我的应用程序的最终目标是让用户输入项目名称/公司名称,然后能够看到sprintPhase,status和任何其他项目相关信息。
您可以使用Linq
(添加using System.Linq;
(来过滤jsonArray
var userFilter = jsonArray.FirstOrDefault(x => x.company == "UserInputCompanyName" || x.projectName == "UserCompanyName");
if(userFilter != null)
{
// show stuff to user of userFilter
}