在 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 反序列化数组的主要内容,如果未能解决你的问题,请参考以下文章