public class ValueToStringConverter : JsonConverter
public override bool CanRead => false;
public override bool CanConvert(Type objectType) => objectType.IsValueType;
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
=> throw new NotSupportedException();
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
var str = value?.ToString();
[JsonConverter(typeof(ValueToStringConverter))]
public int IntValue {get; set;}
[JsonConverter(typeof(ValueToStringConverter))]
public Decimal DecimalValue {get; set;}
public static void Main()
DecimalValue = 3.1415926535897932384626433m
Console.WriteLine($"m.IntValue = {m.IntValue}");
Console.WriteLine($"m.DecimalValue = {m.DecimalValue}");
Console.WriteLine("----------------------------------------");
var json = JsonConvert.SerializeObject(m);
Console.WriteLine("----------------------------------------");
var deserializationResult = JsonConvert.DeserializeObject<Model>(json);
Console.WriteLine($"m.IntValue == deserializationResultIntValue : {m.IntValue == deserializationResult.IntValue}");
Console.WriteLine($"m.DecimalValue == deserializationResult.DecimalValue : {m.DecimalValue == deserializationResult.DecimalValue}");