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}.");
}
}
}
}