我正在尝试从API端点反序列化一些JSON数据,这些数据包含在{8: myData}
中。我不知道如何在第一个属性命名为数字的情况下反序列化它。
示例JSON:
{
8:
[
data,
data2,
data3,
data4
]
}
由于JSON数据的第一个属性名称是8
:,因此我的反序列化程序行失败
IEnumerable<ApiCombatOverallRank> result = JsonConvert.DeserializeObject<IEnumerable<ApiCombatOverallRank>>(resultsString);
我可以创建这样的匿名类型:
var anonType = new { data = new List<ApiCombatOverallRank>() };
IEnumerable<ApiCombatOverallRank> result = JsonConvert.DeserializeAnonymousType(resultsString, anonType).data;
但是,它不会反序列化,因为JSON中的属性名称是8
而不是data
。C#不允许我创建一个匿名对象,比如:
var anonType = new { 8 = new List<ApiCombatOverallRank>() };
类似地,我无法向类似的匿名对象添加注释
var anonType = new {[JsonProperty(PropertyName = "8")] data = new List<ApiCombatOverallRank>() };
如何反序列化此JSON并通过8
的第一个JSON对象属性?
您的json被解析为(在我从您的"数据"中生成字符串之后):
var result = JsonConvert
.DeserializeObject<Dictionary<int, IEnumerable<string>>>(resultsString);
所以我认为,你真正的json可以解析为:
var result = JsonConvert
.DeserializeObject<Dictionary<int, IEnumerable<ApiCombatOverallRank>>>(resultsString);
以及您可以访问的第一个kson对象:
result[8].First();