CSharp · Console
using System;
using Newtonsoft.Json;
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();
writer.WriteValue(str);
}
}
public class Model
{
[JsonConverter(typeof(ValueToStringConverter))]
public int IntValue {get; set;}
[JsonConverter(typeof(ValueToStringConverter))]
public Decimal DecimalValue {get; set;}
}
public class Program
{
public static void Main()
{
var m = new Model()
{
IntValue = 42,
DecimalValue = 3.1415926535897932384626433m
};
Console.WriteLine($"m.IntValue = {m.IntValue}");
Console.WriteLine($"m.DecimalValue = {m.DecimalValue}");
Console.WriteLine("----------------------------------------");
var json = JsonConvert.SerializeObject(m);
Console.WriteLine(json);
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}");
}
}