2016-04-12 2 views
3

Ich bin nicht sicher, wie Sie das folgende JSON in ein stark typisiertes Objekt analysieren.Nicht möglich, JSON in ein Objekt zu analysieren

Die JSON:

{ 
    "data": { 
    "71161": { 
     "air_by_date": 0, 
     "anime": 0, 
     "cache": { 
     "banner": 1, 
     "poster": 1 
     }, 
     "indexerid": 71161, 
     "language": "en", 
     "network": "CBS", 
     "next_ep_airdate": "", 
     "paused": 0, 
     "quality": "SD", 
     "show_name": "name", 
     "sports": 0, 
     "status": "Ended", 
     "subtitles": 0, 
     "tvdbid": 71161 
    }, 
    "71211": { 
     "air_by_date": 0, 
     "anime": 0, 
     "cache": { 
     "banner": 1, 
     "poster": 1 
     }, 
     "indexerid": 71211, 
     "language": "en", 
     "network": "ABC (US)", 
     "next_ep_airdate": "", 
     "paused": 0, 
     "quality": "SD", 
     "show_name": "name2", 
     "sports": 0, 
     "status": "Ended", 
     "subtitles": 0, 
     "tvdbid": 71211 
    }, 
} 

Das Problem ist die Zahl 71161 dies kann für jede JSON-Antwort unterschiedlich sein.

+0

Was passiert, wenn Sie JSON.parse (your_json_string) verwenden geschieht; – pantuofermo

+0

@pantuofermo Der Json ist gültig und wird analysiert. Aber wie mache ich daraus ein stark typisiertes Objekt? –

+1

Sie müssen 'data' definieren als' Dictionary ' – haim770

Antwort

1

Verwenden Sie Json.NET from Newtonsoft. Lassen Sie die data Eigenschaft ein Dictionary<int, Item> sein, die Bibliothek wird die Umwandlung von Schlüsseln aus string zu int Griff:

class Program 
{ 
    class Item 
    { 
     [JsonProperty(PropertyName = "status")] 
     public string Status { get; set; } 
    } 
    class Root 
    { 
     [JsonProperty(PropertyName = "data")] 
     public Dictionary<int, Item> Data { get; set; } 
    } 

    static void Main(string[] args) 
    { 
     var root = JsonConvert.DeserializeObject<Root>(@"{ ""data"": { ""123"": { ""status"": ""Ended"" } } }"); 
     Console.WriteLine(root.Data[123].Status); // prints "Ended" 
    } 
} 
Verwandte Themen