You can use Json.Net
var settings = new JsonSerializerSettings() {
TypeNameHandling = TypeNameHandling.All };
var json = JsonConvert.SerializeObject(obj, settings);
var newObj = JsonConvert.DeserializeObject<SomeType>(json, settings);