【问题标题】:Deserialize array from JSON in C#在 C# 中从 JSON 反序列化数组
【发布时间】:2021-05-04 04:11:08
【问题描述】:

所以我尝试使用 Newtonsoft 将数组从 JSON 反序列化为 C# 类。我已经看过有关此的教程和其他问题,但我遇到了问题,因为我想要获取的数组不在 JSON 的顶层。 JSON 的结构是这样的,我想在其中提取“数据”数组并对其进行反序列化:

 "success": true,
  "data": [
    {      
      "key": "americanfootball_nfl",
      "active": true,
      "group": "American Football",
      "details": "US Football",
      "title": "NFL",
      "has_outrights": false
    },
    {
      "key": "aussierules_afl",
      "active": true,
      "group": "Aussie Rules",
      "details": "Aussie Football",
      "title": "AFL",
      "has_outrights": false
    },
    {
      "key": "basketball_euroleague",
      "active": true,
      "group": "Basketball",
      "details": "Basketball Euroleague",
      "title": "Basketball Euroleague",
      "has_outrights": false
    }
]}

我知道我首先需要从 JSON 中提取数据对象,然后对其进行解析,但我不太确定如何进行。我有这个类来反序列化 JSON:

public class SportsModel
    {       
        public bool Success { get; set; }
        public string Data { get; set; }       
    }

    public class SportsData
    {
        public string Key { get; set; }
        public bool Active { get; set; }
        public string Group { get; set; }
        public string Details { get; set; }
        public string Title { get; set; }
        public bool HasOutrights { get; set; }
    }

目前使用此方法获取顶级数据:

SportsModel data = JsonConvert.DeserializeObject<SportsModel>(response);

我想把JSON数组数据放到一个列表对象中,这样我就可以全部访问了

【问题讨论】:

    标签: c# arrays json api json.net


    【解决方案1】:

    您只需要修复此部分,让序列化程序了解您将Data 字段反序列化为SportsData 类型,而不是string。

    public class SportsModel
    {
       public bool Success { get; set; } 
       public List<SportsData> Data { get; set; } 
    }
    

    更新 要将数据放入列表中,我会假设您指的是这种性质的东西

    SportsModel result = JsonConvert.DeserializeObject<SportsModel>(response);
    var sportsDataList = result.Data;
    

    【讨论】:

    • 如何将这些数据放入列表中?
    【解决方案2】:

    您的 SportModels 类需要更新为:

    public class SportsModel
    {
       public bool Success { get; set; } 
       public List<SportsData> Data { get; set; } 
    }
    
    
    SportsModel result = JsonConvert.DeserializeObject<SportsModel>(response);
    

    你会在一个列表中的数据。

    【讨论】:

      【解决方案3】:

      你能做的是;转到visual studio并在编辑菜单菜单中粘贴特殊 然后单击然后将 json 粘贴为类。

      但首先你需要先复制json字符串。

      【讨论】:

        猜你喜欢
        • 2013-05-27
        • 2017-01-18
        • 2013-02-13
        • 1970-01-01
        • 2021-10-13
        • 2017-10-16
        • 2012-09-20
        • 1970-01-01
        • 2011-10-19
        相关资源
        最近更新 更多