Most data ser/deser solutions consider the entire object, while sometimes data contracts should represent partial updates.

usage:

//create a contract interface, inheriting from IJsonGeneratable

var generatorFactory = new JsonGeneratorFactory();
ISomeContract generator = generatorFactory.CreateJsonGenerator<ISomeContract>();

//update some stuff on generator
generator.SomeProp = "someValue";
...
//get the json 
generator.GetJson();

This create a json containing only updates on some data contract.