using Newtonsoft.Json.Linq;
public static void Main()
""bank"": ""Some value"",
DeserializeDumpAndReserialize(json);
""card"": ""Some other value""
DeserializeDumpAndReserialize(json);
public static void DeserializeDumpAndReserialize(string json)
MyRequest req = JsonConvert.DeserializeObject<MyRequest>(json);
Console.WriteLine("Type: " + req.Type);
Console.WriteLine("Source: " + req.Source);
Console.WriteLine(JsonConvert.SerializeObject(req));
public class MyRequestConverter : JsonConverter
public override bool CanConvert(Type objectType)
return objectType == typeof(MyRequest);
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
JObject jo = JObject.Load(reader);
string type = (string)jo["type"];
MyRequest req = new MyRequest
Source = (string)jo[type ?? ""]
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
MyRequest req = (MyRequest)value;
JObject jo = new JObject(
new JProperty("type", req.Type),
new JProperty(req.Type, req.Source));
[JsonConverter(typeof(MyRequestConverter))]
public string Type { get; set; }
public string Source { get; set; }