【问题标题】:Enumerator missing in JSON classJSON 类中缺少枚举器
【发布时间】:2015-07-02 09:52:08
【问题描述】:

我正在尝试反序列化这个json。但我有几个问题,特别是编译器告诉我:

RootObject 不包含 GetEnumerator 的公共定义。

这是用json2csharp生成的类:

 public class Self
    {
        public string href { get; set; }
    }

    public class Fixtures
    {
        public string href { get; set; }
    }

    public class Players
    {
        public string href { get; set; }
    }

    public class Links
    {
        public Self self { get; set; }
        public Fixtures fixtures { get; set; }
        public Players players { get; set; }
    }

    public class RootObject
    {
        public Links _links { get; set; }
        public string name { get; set; }
        public string code { get; set; }
        public string shortName { get; set; }
        public string squadMarketValue { get; set; }
        public string crestUrl { get; set; }
    }

这是我的代码:

var obj = JsonConvert.DeserializeObject<RootObject>(responseText);

            foreach (var item in obj)
            {
                item.name //... this is an example of the attribute that I want grab from the JSON for each team    
            }

我需要遍历所有团队并将它们保存到数据库中。

以下是 JSON 的结构,如果有帮助的话:

{
"_links":{
"self":{
"href":"http://api.football-data.org/alpha/teams/19"
},
"fixtures":{
"href":"http://api.football-data.org/alpha/teams/19/fixtures"
},
"players":{
"href":"http://api.football-data.org/alpha/teams/19/players"
}
},
"name":"Eintracht Frankfurt",
"code":"SGE",
"shortName":"Eintr. Frankfurt",
"squadMarketValue":"69,050,000 €",
"crestUrl":"http://upload.wikimedia.org/wikipedia/commons/0/04/Eintracht_Frankfurt_Logo.svg"
}

【问题讨论】:

  • 消息很清楚,您的对象不可枚举。
  • 它是 一个 对象。你期望foreach() 究竟会做什么?如果您想阅读名称,可以使用obj.name。它只包含一个名称。
  • 你能告诉我如何从获取所有值中迭代这个 json 吗?我想为每个团队获取(链接、名称、代码、短名称、squadMarketValue、crestUrl)。
  • @HaroldFinch 你的 json 只代表一个团队。您尚未发布如何获得该 json,因此无法提供帮助。您是在进行 HTTP 调用还是从数据库中读取它?你在调用一些API吗?您是否查看了文档以了解如何获取许多团队的数据?我们甚至无法猜测如何做这些事情

标签: c# json enumerator


【解决方案1】:
var obj = JsonConvert.DeserializeObject<RootObject>(responseText);

将返回一个 RootObject 而不是一组对象。

我认为问题在于您的 api 调用。在这种情况下,您提出的请求将返回一个团队(法兰克福法兰克福)。

您想拨打一个返回团队列表的调用。

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 2017-09-21
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多