Training
Let's see what your JSON is. I personally use this resource for such purposes. We insert our data there and see the following picture:

What we have here?
- We have the first level (let's call it Root).
- Root contains some objects that have a name and something inside (let's call internal objects, for example, Data).
- Inside Data we see two values (min and max).
Well, we figured out the structure, then we will need something that will make life easier for us when working with JSON format, I personally recommend using Newtonsoft.Json , an excellent library for working with JSON!
Deserialization
Having dealt with the structure and setting the necessary, you can proceed to deserialization (JSON conversion into an object).
Let's go from the very end, namely, let's create Data for the beginning. We remember that Data has 2 values of min and max, both contain a number (that is, int). Having all this, we can write the following class:
public class Data { public int Min { get; set; } public int Max { get; set; } }
Note that all variables here are written according to the CamelCase rules, that is, with a capital letter. I also advise you to stick to this style when writing such classes, but you need to remember: you can change the register in the name without problems, but if the name in the class differs from that in JSON, we won’t get the data and therefore you should mark such renames with the attribute [JsonProperty("oldName")] with the name that is in JSON.
So, having a class Data, we can go a higher level, create an object with the name and Data inside. For this, in C # it is customary to use a Dictionary (dictionary), where Key is the name (in your case, date), and Value is data (in your case, the Data class). Based on this, we can write the following:
var source = "{\"14.05.2018\":{\"min\":\"2\",\"max\":\"7\"},\"15.05.2018\":{\"min\":\"1\",\"max\":\"7\"}}"; var parsed = JsonConvert.DeserializeObject<Dictionary<string, Data>>(source);
Let me explain, we call the DeserializeObject method, which we set the data type to Dictionary<string, Data> , and we pass the source - our JSON in the form of a string.
Actually and everything, with the result we get a Dictionary<string, Data> object Dictionary<string, Data> from which we can get what we need, for example like this:
parsed["14.05.2018"].Max;
Or go through the cycle:
foreach (var data in parsed) { Console.WriteLine($"Key: {data.Key}"); Console.WriteLine($"Max: {data.Value.Max} Min: {data.Value.Min}"); }
The parsed object itself will have approximately the following structure:

By the way! To work with JSON, resources that help you create the necessary class structure, for example this one , are very cool. By inserting your JSON in the left field and specifying the desired class name ( Data ) in the Name field, the site will give us the following structure:
public partial class Data { [JsonProperty("min")] public string Min { get; set; } [JsonProperty("max")] public string Max { get; set; } } public partial class Data { public static Dictionary<string, Data> FromJson(string json) => JsonConvert.DeserializeObject<Dictionary<string, Data>>(json, QuickType.Converter.Settings); }
Do not like anything? In general, use the thing is very useful!
I hope helped. Good luck learning C #!
JsonConvert.DeserializeObject<Dictionary<string, Data>>(json). Where Data class with fields max, min. - adrug