using Newtonsoft.Json.Linq;
public static void Main()
string json = @"[{ ""a"": 1, ""b"": 2 },{ ""a"": 3, ""b"": 4 }]";
var models = JsonConvert.DeserializeObject<Model[]>(json);
foreach (var model in models)
Console.WriteLine("A: " + model.A);
Console.WriteLine("B: " + model.B);
Console.WriteLine("FullJson: " + model.FullJson);
[JsonConverter(typeof(ModelConverter))]
public string A {get;set;}
public string B {get;set;}
public string FullJson {get;set;}
class ModelConverter : JsonConverter
public override bool CanConvert(Type objectType)
return objectType == typeof(Model);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JObject jo = JObject.Load(reader);
Model model = new Model();
serializer.Populate(jo.CreateReader(), model);
model.FullJson = jo.ToString(Formatting.None);
public override bool CanWrite => false;
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();