【问题标题】:Null value in json objectjson对象中的空值
【发布时间】:2015-07-06 08:50:37
【问题描述】:

我编写了一个代码来反序列化这个JSON

首先,我创建了一个类:

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

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

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

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

    public class Links
    {
        public Self self { get; set; }
        public Soccerseason soccerseason { get; set; }
        public HomeTeam homeTeam { get; set; }
        public AwayTeam awayTeam { get; set; }
    }

    public class Result
    {
        public int goalsHomeTeam { get; set; }
        public int goalsAwayTeam { get; set; }
    }

    public class LastHomeWinHomeTeam
    {
        public Links _links { get; set; }
        public string date { get; set; }
        public object status { get; set; }
        public int matchday { get; set; }
        public string homeTeamName { get; set; }
        public string awayTeamName { get; set; }
        public Result result { get; set; }
    }

    public class LastWinHomeTeam
    {
        public Links _links { get; set; }
        public string date { get; set; }
        public object status { get; set; }
        public int matchday { get; set; }
        public string homeTeamName { get; set; }
        public string awayTeamName { get; set; }
        public Result result { get; set; }
    }

    public class LastAwayWinAwayTeam
    {
        public Links _links { get; set; }
        public string date { get; set; }
        public object status { get; set; }
        public int matchday { get; set; }
        public string homeTeamName { get; set; }
        public string awayTeamName { get; set; }
        public Result result { get; set; }
    }

    public class LastWinAwayTeam
    {
        public Links _links { get; set; }
        public string date { get; set; }
        public object status { get; set; }
        public int matchday { get; set; }
        public string homeTeamName { get; set; }
        public string awayTeamName { get; set; }
        public Result result { get; set; }
    }

    public class Head2head
    {
        public int count { get; set; }
        public string timeFrameStart { get; set; }
        public string timeFrameEnd { get; set; }
        public int homeTeamWins { get; set; }
        public int awayTeamWins { get; set; }
        public int draws { get; set; }
        public LastHomeWinHomeTeam lastHomeWinHomeTeam { get; set; }
        public LastWinHomeTeam lastWinHomeTeam { get; set; }
        public LastAwayWinAwayTeam lastAwayWinAwayTeam { get; set; }
        public LastWinAwayTeam lastWinAwayTeam { get; set; }
        public List<Fixture> fixtures { get; set; }
    }

    public class Fixture
    {
        public Links _links { get; set; }
        public string date { get; set; }
        public object status { get; set; }
        public int matchday { get; set; }
        public string homeTeamName { get; set; }
        public string awayTeamName { get; set; }
        public Result result { get; set; }
    }

    public class RootObject
    {
        public List<Fixture> fixture { get; set; }
        public Head2head head2head { get; set; }
    }

所以我做了一个解析请求的代码,并返回一个responseText

string responseText = Parser.Request(link); //Parser is the class that perform HttpRequest

目前没问题。
我已经声明了用于反序列化返回的 responseText 的对象:

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

接下来我做foreach:

foreach (var fixture in obj.fixture)
{do stuff..}

但在obj.fixture 中,我得到空值,我不知道为什么。因为所有的 JSON 都被正确地反序列化了。我做错了什么?

【问题讨论】:

  • 你能把你的例子简化为minimal example吗?
  • 使用自动生成类:json2csharp.com
  • 我已经用过了。但在这种情况下不起作用。

标签: c# json wpf json.net


【解决方案1】:

JSON 中的键是 "fixtures" - 它需要与您的类的属性名称​​完全匹配。改变

public List<Fixture> fixture { get; set; }

public List<Fixture> fixtures { get; set; }

或者,您可以使用JsonProperty 属性:

[JsonProperty("fixtures")]
public List<Fixture> fixture { get; set; }

【讨论】:

  • 很抱歉这个错误,但是我对 head2head 对象也有同样的问题
  • JSON 中根本没有head2head,也没有任何类似的东西。我建议您在 json2csharp.com 中重新导入 JSON - 在您在那里进行第一次导入后,提供方可能已更改 JSON 结构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多