using Newtonsoft.Json.Linq;
public static void Main()
DumpFoo(existing, "original foo");
JObject obj = JsonConvert.DeserializeObject<JObject>(@"{ ""Quantity"": 23, ""Color"": ""Red"", ""Extra"": ""Will be ignored"" }");
obj.PopulateObject<Foo>(existing);
DumpFoo(existing, "foo after copying properties from JSON");
private static void DumpFoo(Foo foo, string msg)
Console.WriteLine("--- " + msg + " ---");
Console.WriteLine("Name: " + foo.Name);
Console.WriteLine("Size: " + foo.Size);
Console.WriteLine("Color: " + foo.Color);
Console.WriteLine("Quantity: " + foo.Quantity);
public string Name { get; set; }
public string Size { get; set; }
public string Color { get; set; }
public int Quantity { get; set; }
public static class JsonExtensions
public static void PopulateObject<T>(this JToken jt, T target)
JsonSerializer serializer = new JsonSerializer();
serializer.Populate(jt.CreateReader(), target);