【发布时间】:2017-01-16 07:10:54
【问题描述】:
我正在尝试从 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 验证中可以看出,这不是有效的 json。
标签: c# json json.net deserialization