C# JSON中通过数组的foreach循环为null

C# JSON中通过数组的foreach循环为null,c#,arrays,json,loops,foreach,C#,Arrays,Json,Loops,Foreach,我有一个RESTclient并向服务器发送响应。响应是一个JSON。 我能够在控制台中显示所有信息,但在这个JSON中,有一个数组。 使用foreach循环显示json im,但我没有在其中获得数组。数组对象为空 public class Test1 { public string Name{ get; set; } } public class Test2 { public IList<Test> test{ get

我有一个RESTclient并向服务器发送响应。响应是一个JSON。 我能够在控制台中显示所有信息,但在这个JSON中,有一个数组。 使用foreach循环显示json im,但我没有在其中获得数组。数组对象为空

public class Test1
    {
        public string Name{ get; set; }
    }

    public class Test2
    {
        public IList<Test> test{ get; set; }
    }


var test = response.Content.ReadAsAsync<IEnumerable<Test1>>().Result;
           

                foreach (var b in test)
                {
                    Console.WriteLine("{0}", b.Name);
                }
            }
公共类Test1
{
公共字符串名称{get;set;}
}
公共类Test2
{
公共IList测试{get;set;}
}
var test=response.Content.ReadAsAsync().Result;
foreach(测试中的var b)
{
Console.WriteLine(“{0}”,b.Name);
}
}
所以我解释说:Test1类是数组的信息。我通过test2从JSON获取所有信息。 但我只需要包含“name”的数组。 我认为foreach循环是正确的,问题在于var“test”

我希望你能理解,有人能帮助我:/


谢谢

如果您的JSON响应格式正确,则响应很可能在实际接收之前在for循环中处理,因为您正在异步读取它

您需要在ReadAsAsync调用之前添加await关键字来等待响应,并将async关键字添加到方法声明中

public async void OutputResponse()
{
    var test = await response.Content.ReadAsAsync<IEnumerable<Test1>>();
    foreach (var b in test)
       {
           Console.WriteLine("{0}", b.Name);
       }
}
public异步void OutputResponse()
{
var test=wait response.Content.ReadAsAsync();
foreach(测试中的var b)
{
Console.WriteLine(“{0}”,b.Name);
}
}

您是否将JSON响应作为字符串?或者类似于端点的输出?它类似于服务器的输出您可能应该等待异步读取。以确保在遍历结果时完成。第二,执行空检查以验证测试是否为空。我如何等待异步读取?我如何在我的主方法中使用它?:)我不知道系统的架构,但你有两个选择。如果OutputResponse方法与主方法在同一个类中,那么可以将OutputResponse方法设置为静态,这样就可以从主方法中调用它。您还可以将该方法放在它自己的类中。然后在主方法中实例化这个类的一个新实例,并从实例化的类对象调用OutputResponse方法。请记住,Main方法只是作为应用程序的入口点,而不是调用应用程序中的所有内容或存储所有代码。我得到了错误,“GetWaiter”没有定义。我想我知道问题所在,我会解决我的答案。您需要从下一行中删除“.Result”。var test=wait response.Content.ReadAsAsync().Result;Result属性不是async,但ReadAsAsync是async。您是否可以更新您的问题,以指示“response”对象的来源/创建位置?很高兴我能提供帮助:)