在 C# 中从 JSON 反序列化数组
Deserialize array from JSON in C#
所以我正在尝试使用 Newtonsoft 将数组从 JSON 反序列化为 C# class。我看过教程和其他关于此的问题,但我 运行 遇到了问题,因为我想要获取的数组不在 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 中提取数据对象,然后对其进行解析,但我不太确定如何进行解析。我有这个 class 反序列化 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数组数据放到一个列表对象中,这样我就可以全部访问了
你能做的是;转到 visual studio 并在编辑菜单菜单中粘贴特殊内容
然后单击然后将 json 粘贴为 class。
但首先你需要先复制 json 字符串。
您只需修复此部分,让序列化程序了解您正在将 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;
您的 SportModels class 需要更新为:
public class SportsModel
{
public bool Success { get; set; }
public List<SportsData> Data { get; set; }
}
SportsModel result = JsonConvert.DeserializeObject<SportsModel>(response);
您将在列表中显示数据。
所以我正在尝试使用 Newtonsoft 将数组从 JSON 反序列化为 C# class。我看过教程和其他关于此的问题,但我 运行 遇到了问题,因为我想要获取的数组不在 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 中提取数据对象,然后对其进行解析,但我不太确定如何进行解析。我有这个 class 反序列化 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数组数据放到一个列表对象中,这样我就可以全部访问了
你能做的是;转到 visual studio 并在编辑菜单菜单中粘贴特殊内容 然后单击然后将 json 粘贴为 class。
但首先你需要先复制 json 字符串。
您只需修复此部分,让序列化程序了解您正在将 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;
您的 SportModels class 需要更新为:
public class SportsModel
{
public bool Success { get; set; }
public List<SportsData> Data { get; set; }
}
SportsModel result = JsonConvert.DeserializeObject<SportsModel>(response);
您将在列表中显示数据。