在 C# 中从 JSON 反序列化数组

Posted

技术标签:

【中文标题】在 C# 中从 JSON 反序列化数组【英文标题】:Deserialize array from JSON in C# 【发布时间】: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数组数据放到一个列表对象中,这样我就可以全部访问了

【问题讨论】:

【参考方案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字符串。

【讨论】:

以上是关于在 C# 中从 JSON 反序列化数组的主要内容,如果未能解决你的问题,请参考以下文章

使用C# json 二维数组 反序列化

在 C# 中反序列化 JSON 数组

在 C# 中将 JSON 数组反序列化为对象

JSON Newtonsoft C# 反序列化数组

C# json反序列化 对象中嵌套数组 (转载)

使用 LitJson 在 C# 中反序列化 JSON 对象数组 [重复]