我正在尝试从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对象属性?
答案 0 :(得分:1)
你的json是parsebar(在我用#34;数据&#34;&#34;制作字符串之后):
var result = JsonConvert
.DeserializeObject<Dictionary<int, IEnumerable<string>>>(resultsString);
所以我认为,你真正的json你可以解析为:
var result = JsonConvert
.DeserializeObject<Dictionary<int, IEnumerable<ApiCombatOverallRank>>>(resultsString);
和你可以访问的第一个kson对象:
result[8].First();