using System; using Newtonsoft.Json; namespace EShang.Common { /// /// /// public class CusJsonConverter : JsonConverter { /// /// 限定转化类型 /// /// /// public override bool CanConvert(Type objectType) { return objectType == typeof(int) || objectType == typeof(decimal); } /// /// /// /// /// /// /// /// public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Integer) { return Convert.ToInt32(reader.Value); } else if (reader.TokenType == JsonToken.Float) { return Convert.ToDouble(reader.Value); } throw new JsonSerializationException($"Unexpected token {reader.TokenType} when parsing {objectType.Name}."); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { if (value is int) { writer.WriteValue((int)value); } else if (value is decimal) { writer.WriteValue((decimal)value); } else { throw new JsonSerializationException($"Unexpected value when writing {value?.GetType().Name}."); } } } }