using Newtonsoft.Json.Serialization;
public static void Main()
var ro1 = new RootObject<Request_1>(){Request = new Request_1()};
var ro2 = new RootObject<Request_2>(){Request = new Request_2()};
var settings = new JsonSerializerSettings
ContractResolver = new DynamicPropertyResolver(),
Formatting = Formatting.Indented
Console.WriteLine(JsonConvert.SerializeObject(ro1, settings));
Console.WriteLine(JsonConvert.SerializeObject(ro2, settings));
public class RootObject<T> where T: new()
public T Request { get; set; }
public class DynamicPropertyResolver : DefaultContractResolver
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
var property = base.CreateProperty(member, memberSerialization);
if("Request".Equals(property.PropertyName))
property.PropertyName = property.PropertyType.Name;