Как распарсить json?
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);
        }
    }
}
Получать доступ по ключу необязательно, можно просто к массиву всех ветвей объекта (child nodes).