2015-11-27 3 views
1

Im пытается десериализовать этот json, изначально свойство Airlines является IList, но это не работает, потому что значения меняются, поэтому я использовал словарь. Я могу получить ключ просто отлично, но значения пустые.JSON Desrialize Dictionary

Это образец JSON я пытаюсь десериализацией

"airlines": { 
     "MH": { 
     "lowcost": true, 
     "name": "Jetstar Asia", 
     "alliance_name": null, 
     "id": 300, 
     "rates": "18", 
     "average_rate": "3.12" 
     }, 
     "PR": { 
     "lowcost": true, 
     "name": "Tigerair", 
     "alliance_name": null, 
     "id": 800, 
     "rates": "26", 
     "average_rate": "3.41" 
     }, 
     "CZ": { 
     "lowcost": false, 
     "name": "Singapore Airlines", 
     "alliance_name": "Star Alliance", 
     "id": 449, 
     "rates": "620", 
     "average_rate": "4.18" 
     }, 
     "SQ": { 
     "lowcost": true, 
     "name": "AirAsia Zest", 
     "alliance_name": null, 
     "id": 839, 
     "rates": "104", 
     "average_rate": "2.56" 
     }, 
     "GA": { 
     "lowcost": true, 
     "name": "CEBU Pacific Air", 
     "alliance_name": null, 
     "id": 169, 
     "rates": "72", 
     "average_rate": "3.44" 
     }, 

Это свойство

[JsonProperty("airlines")] 
public Dictionary<string, Airlines> Airlines { get; set; } 

public class Airlines 
{ 
    [JsonProperty("AirlineDetails")] 
    public ICollection<AirlineDetails> AirlineDetails { get; set; } 
} 

public class AirlineDetails 
{ 
    [JsonProperty("average_rate")] 
    public string AverageRate { get; set; } 

    [JsonProperty("alliance_name")] 
    public string AllianceName { get; set; } 

    [JsonProperty("name")] 
    public string Name { get; set; } 

    [JsonProperty("lowcost")] 
    public bool Lowcost { get; set; } 

    [JsonProperty("id")] 
    public int Id { get; set; } 

    [JsonProperty("rates")] 
    public string Rates { get; set; } 
} 

Изображение ниже показывает, есть счетчик, который является 5 точно так, как подсчитывать выше объект JSON , но значения пустые, я также хочу получить значения, которые являются именем авиакомпании.

enter image description here

Empty Value:

enter image description here

ответ

1

Airlines класс не является необходимым. Объявите ваше имущество как Dictionary<string, AirlineDetails>:

public Dictionary<string, AirlineDetails> Airlines { get; set; } 
+0

оно работает спасибо. – Nevi