public class FlagConverter : JsonConverter
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
writer.WriteValue(value.ToString());
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
if (reader.Value is string)
return (string)reader.Value != "F";
else if (reader.Value is bool)
return (bool)reader.Value;
throw new Exception("Bad");
public override bool CanConvert(Type objectType)
return objectType == typeof(bool);
[JsonConverter(typeof(FlagConverter))]
[JsonProperty("flag_value")]
public bool FlagValue {get;set;}
public static void Main()
var order = JsonConvert.DeserializeObject<Order>("{ \"flag_value\": 'T' }");
Console.WriteLine(order.FlagValue);
order = JsonConvert.DeserializeObject<Order>("{ \"flag_value\": 'F' }");
Console.WriteLine(order.FlagValue);
order = JsonConvert.DeserializeObject<Order>("{ \"flag_value\": true }");
Console.WriteLine(order.FlagValue);
order = JsonConvert.DeserializeObject<Order>("{ \"flag_value\": false }");
Console.WriteLine(order.FlagValue);