2017-01-16 96 views
1

我正在尝试从API端点反序列化一些JSON数据,并将数据包含在{8: myData}中。我无法弄清楚如何用第一个被命名为数字的属性来反序列化它。如何使用Json.Net反序列化以数字属性名称开头的json?

例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中的属性名称i s 8不是data。 C#不允许我创建一个匿名对象,如:

var anonType = new { 8 = new List<ApiCombatOverallRank>() }; 

同样,我无法注释添加到像anonomyous对象:

var anonType = new {[JsonProperty(PropertyName = "8")] data = new List<ApiCombatOverallRank>() }; 

我如何反序列化这个JSON和拿过去第一个JSON对象属性是8

+0

据我所知,从JSON验证,这是无效的json。 –

回答

1

你JSON是parsebar为(后,我从你的 “数据的” 字符串):

var result = JsonConvert 
    .DeserializeObject<Dictionary<int, IEnumerable<string>>>(resultsString); 

,所以我想,你真正的JSON,你可以作为解析:

var result = JsonConvert 
    .DeserializeObject<Dictionary<int, IEnumerable<ApiCombatOverallRank>>>(resultsString); 

和你的第一个kson对象你可以访问为:

result[8].First();