Json.Net умеет то, что вам нужно.
Вот небольшой примерчик:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace JsonTest
{
public class Deserialized
{
public class Region
{
public class Domain
{
public string code { get; set; }
public string name { get; set; }
public int id { get; set; }
}
public string code { get; set; }
public string countryCode { get; set; }
public string name { get; set; }
public int id { get; set; }
public Domain domain { get; set; }
}
public Dictionary<int, Region> regions { get; set; }
}
class Program
{
static void Main(string[] args)
{
string json = @"{
""regions"": {
""937"": {
""code"": ""Russia"",
""countryCode"": ""ru"",
""name"": ""Россия"",
""id"": 937,
""domain"": {
""code"": "".ru"",
""name"": ""Росийская Федерация"",
""id"": 175
}
},
""979"": {
""code"": ""Bryansk,Bryansk Oblast,Russia"",
""countryCode"": ""ru"",
""name"": ""Брянск"",
""id"": 979,
""domain"": {
""code"": "".ru"",
""name"": ""Росийская Федерация"",
""id"": 175
}
}
}
}";
Deserialized data = JsonConvert.DeserializeObject<Deserialized>(json);
}
}
}