using Newtonsoft.Json.Linq;
using System.Collections.Generic;
public static void Main()
var blocks = JsonConvert.DeserializeObject<Blocks>(json, new DataConverter());
foreach (var block in blocks.Value)
public class DataConverter : JsonConverter
public override bool CanConvert(Type objectType) => typeof(Data).IsAssignableFrom(objectType);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
var obj = JObject.Load(reader);
var dataType = (string)obj["Type"];
serializer.Populate(obj.CreateReader(), item);
public override bool CanWrite => false;
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) => throw new NotSupportedException();
private static string GetBody()
return "{\"nextLink\":\"NextLink\",\"value\":[{\"Block\":{\"BlockName\":\"Name\",\"BlockClass\":\"Class\",\"IsVisibile\":true,\"Data\":{\"Type\":\"Footer\",\"Values\":[{\"Property1\":\"Property1\",\"Property2\":\"Property2\"}],\"Show\":false}}},{\"Block\":{\"BlockName\":\"Name\",\"BlockClass\":\"Class\",\"IsVisibile\":true,\"Data\":{\"Type\":\"Header\",\"Title\":\"Main title\",\"Subtitle\":\"Subtitle\"}}},{\"Block\":{\"BlockName\":\"Name\",\"BlockClass\":\"Class\",\"IsVisibile\":true,\"Data\":{\"Type\":\"Body\",\"Information\":\"Info\",\"AdditionalText\":\"More text\",\"Projects\":[\"Project1\",\"Project2\"]}}}]}";
public string NextLink { get; set; }
public Response[] Value { get; set; }
public Block Block { get; set; }
public string BlockName { get; set; }
public string BlockClass { get; set; }
public bool IsVisible { get; set; }
public Data Data { get; set; }
public string Type { get; set; }
public class FooterType : Data
public bool Show { get; set; }
public IEnumerable<object> Values { get; set; }
public class HeaderType : Data
public string Title { get; set; }
public string Subtitle { get; set; }
public class BodyType : Data
public string Information { get; set; }
public string AdditionalText { get; set; }
public IEnumerable<object> Projects { get; set; }