65 lines
1.8 KiB
C#
65 lines
1.8 KiB
C#
using System;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace EShang.Common
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
public class CusJsonConverter : JsonConverter
|
|
{
|
|
/// <summary>
|
|
/// 限定转化类型
|
|
/// </summary>
|
|
/// <param name="objectType"></param>
|
|
/// <returns></returns>
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
return objectType == typeof(int) || objectType == typeof(decimal);
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="reader"></param>
|
|
/// <param name="objectType"></param>
|
|
/// <param name="existingValue"></param>
|
|
/// <param name="serializer"></param>
|
|
/// <returns></returns>
|
|
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}.");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|