我如何使用IEnumerable从http调用的json输入中创建变量? C#.NET

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何使用IEnumerable从http调用的json输入中创建变量? C#.NET相关的知识,希望对你有一定的参考价值。

我正在尝试使用应用程序来调用api,并返回用户唯一的数据。我为导入的项目制作了一个单独的类:

public class ItemList
{
     public class Task : IEnumerable<Task>
     {
          public string variable1 { get; set; }
          ....
     }

     public IEnumerator<Task> GetEnumerator()
     { 
          return taskList.GetEnumerator();
     }

     IEnumerator IEnumerable.GetEnumerator()
     {
          return taskList.GetEnumerator();
     }
}

在一个单独的类中,我进行了一个http调用,该返回的json被归类为任务。

WebRequest requestObjGet = WebRequest.Create(url);
//headers, etc
responseObjGet = (HttpWebResponse)requestObjGet.GetResponse();

using (Stream stream = responseObjGet.GetResponseStream())
{
    StreamReader sr = new StreamReader(stream);
    strResultTest=sr.ReadToEnd();

    ItemList userActiveItemData = JsonConvert.DeserializeObject<ItemList>(strResultTest);

    foreach(Task item in userActiveITemData)
    { 
       // DO A THING
    }
}

[这里,我收到一个错误,因为ItemList不包含ItemList的公共实例,所以foreach无法对GetEnumerator类型的变量进行操作。

有人可以帮我运行此循环吗?

谢谢!

答案

不需要类ItemList。您正在尝试实现IEnumerable接口,可以用已经实现List<Task>的简单Task[]IEnumerable代替。

您可以将JSON反序列化为Task的数组。

Task[] userActiveITemData = JsonConvert.DeserializeObject<Task[]>(strResultTest);

foreach(Task item in userActiveITemData)
{ 
   // DO A THING
}

以上是关于我如何使用IEnumerable从http调用的json输入中创建变量? C#.NET的主要内容,如果未能解决你的问题,请参考以下文章

如何创建调用 IEnumerable<TSource>.Any(...) 的表达式树?

如何使用 LINQ 从 DataTable 中以 IEnumerable<MODEL> 形式获取数据?

在 Powershell 中,如何传递 IEnumerable 参数?

如何从php调用“asp.net api上传文件”

C# IEnumerable,IEnumerator 重置函数未被调用

使用 ShouldBeEquivalentTo 时如何排除 IEnumerable 中所有项目的属性?