2016-04-12 4 views
3

Я не уверен, как разобрать следующий json в строго типизированный объект.Невозможно проанализировать json в объекте

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 
    }, 
} 

Проблема является число 71161 это может быть различным для каждого ответа JSON.

+0

Что произойдет, если вы используете JSON.parse (your_json_string); – pantuofermo

+0

@pantuofermo Json действителен и будет разбираться. Но как я могу превратить его в объект с категориальными типами? –

+1

Вам нужно определить 'data' как' Dictionary ' – haim770

ответ

1

Использование Json.NET from Newtonsoft. Пусть data свойство быть Dictionary<int, Item>, библиотека будет обрабатывать преобразование ключей от string к int:

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" 
    } 
} 
Смежные вопросы