2016-04-12 14 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 
    }, 
} 

は、問題は、これが各JSON応答のために異なる可能性が数71161です。

+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" 
    } 
} 
関連する問題