using System.Collections.Generic;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
public static void Main()
""current_time"": 1539180113317,
""current_time_string"": ""16:01"",
""min_date"": 153912240000,
""max_date"": 153920520000,
""day_string"": ""Aujourd'hui"",
var list = JsonConvert.DeserializeObject<List<WeatherPredictionDay>>(content, new EpochConverter());
foreach (var day in list)
Console.WriteLine("Current Time: " + day.CurrentTime);
Console.WriteLine("Temperature Predictions:");
foreach (var kvp in day.Temperature)
Console.WriteLine(" " + kvp.Key + ": " + kvp.Value);
class WeatherPredictionDay
[JsonProperty("current_time")]
public DateTime CurrentTime { get; set; }
[JsonProperty("temperature")]
[JsonConverter(typeof(TemperatureArrayConverter))]
public Dictionary<DateTime, double> Temperature { get; set; }
class TemperatureArrayConverter : JsonConverter
public override bool CanConvert(Type objectType)
return (objectType == typeof(Dictionary<DateTime, double>));
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JArray ja = JArray.Load(reader);
var dict = new Dictionary<DateTime, double>();
foreach (JArray item in ja)
var key = item[0].ToObject<DateTime>(serializer);
var val = item[1].ToObject<double>(serializer);
public override bool CanWrite
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();
public class EpochConverter : DateTimeConverterBase
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
writer.WriteValue(((DateTime)value - Epoch).TotalMilliseconds);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
if (reader.Value == null) { return null; }
return Epoch.AddMilliseconds((long)reader.Value);