我有一个从Web服务调用返回的JSON数组。我最终试图将所有员工数据插入到SQL数据库中,但是如果我现在可以将其写入控制台,我相信我可以完成其余工作。我的数组返回了几百个员工记录,但是当我通过循环尝试打印每个员工的第一个中间最后一个时,我只返回第一个员工记录。任何人对如何解决我的问题都有任何想法?这是我的代码:
var i = 0;
foreach (var employee in jsonObj)
{
var firstName = jsonObj["workers"][i]["person"]["legalName"]["givenName"].ToString();
var middleName = jsonObj["workers"][i]["person"]["legalName"]["middleName"].ToString();
var familyName = jsonObj["workers"][i]["person"]["legalName"]["familyName1"].ToString();
Console.WriteLine(firstName + " " + middleName + " " + familyName);
i += 1;
}
编辑:不是复制/粘贴整个json架构,而是链接到它 - ADP Worker V2 schema。您将要扩展GET / hr / v2 / workers部分以查看示例。
答案 0 :(得分:0)
问题是您的jsonObj不是员工的集合,因此您无法在其上使用foreach
并获得预期的结果。由于您的实际架构非常复杂,以下是如何使用更简化的类foreach
循环获取数据的示例:
static void Main(string[] args)
{
Company company = // Whatever you do to retrieve your company
foreach (var employee in company.Employees)
{
Console.WriteLine(employee.Person.Name);
}
}
public class Company
{
public List<Employee> Employees { get; set; }
}
public class Employee
{
public int DepartmentId { get; set; }
public Person Person { get; set; }
}
public class Person
{
public string Name { get; set; }
}
如您所见,Company
类有一个员工列表。您可以使用foreach
,因为您正在查看列表,这是一个集合。采用的另一个好习惯是使用点符号,即employee.Person.Name
,它没有拼写你正在寻找的属性的危险,尽管你仍然需要检查空值。