【问题标题】:How to store JSON data to IEnumerable and loop through it? [closed]如何将 JSON 数据存储到 IEnumerable 并循环遍历它? [关闭]
【发布时间】:2020-03-02 02:02:55
【问题描述】:

我想调用多个 API(使用不同的参数),然后将它们存储到某种容器中。然后我想抓住这个容器,发送到我的视图(Razor),循环遍历它并将它附加到我的 DOM(或显示它)。

以下操作无效。

public IActionResult Index()
{
    string[] day = {"Mon", "Tue", "Wed", "Thu", "Fri"};
    IEnumerable<API> results = new IEnumerable<API>();
    for (var i = 0; i < day.Length; i++)
    {
        var client = new RestClient("https://api.example.com/values/d=" + day[i]);
        var request = new RestRequest(Method.GET);
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("accept", "application/json; charset=utf-8");
        IRestResponse response = client.Execute(request);
        var responseContent = response.Content;

        results[i] = new JavaScriptSerializer().Deserialize<API>(responseContent);
    }

    return View(results);
}

【问题讨论】:

  • 你的问题是?
  • 问题出在哪里?

标签: c# asp.net-mvc api asp.net-core ienumerable


【解决方案1】:

这不起作用,因为IEnumerable 没有索引器:

results[i] =

您也可以使用列表:

List<API> results = new List<API>();
for (var i = 0; i < day.Length; i++) //can also be foreach
{ 
   ///omitted 

   results.Add(new JavaScriptSerializer().Deserialize<API>(responseContent));
}

【讨论】:

    【解决方案2】:

    您可以通过这种方式返回 IEnumerable 类型:

    IEnumerable<API> results = new List<API>();
    
    
    results.Add(new JavaScriptSerializer().Deserialize<API>(responseContent));
    

    结果 ==> System.Collections.Generic.IEnumerable {System.Collections.Generic.List}

    【讨论】:

    • 您不能将 Add() 与 IEnumerable 类型对象一起使用,IEnumerable 用于枚举集合。您需要将其声明为列表: List results = new List();
    • 对象的声明是用IEnumerable完成的,但是实例用List()
    • 它给了我一个错误:“'IEnumerable'不包含'Add'的定义并且没有可访问的扩展方法'Add'接受'IEnumerable'类型的第一个参数可以找到”
    • 如果您将集合存储为 IEnumerable,您将无法调用 List 中使用的方法,除非您将其转换回 List;但是,如果您这样做,那么首先将其存储为 IEnumerable 并没有多大意义。
    • 你用过这段代码:IEnumerable results = new List();
    猜你喜欢
    • 1970-01-01
    • 2018-10-19
    • 2021-06-18
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多