这是课程
public class ModelingData : BaseEquatable<ModelingData>
{
[JsonConverter(typeof(DecimalToStringConvertor))]
public decimal? ActualValue { get; set; }
public string DisplayValue { get; set; }
public override bool Equals(ModelingData other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Equals(other.ActualValue, ActualValue);
}
}
我已经创建了类
public class DecimalToStringConvertor : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
string javaScriptTicks = !string.IsNullOrWhiteSpace(Convert.ToString(value)) ? value.ToString() : string.Empty;
writer.WriteValue(javaScriptTicks);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (existingValue == null)
{
return 0M;
}
return Convert.ToDecimal(existingValue);
}
public override bool CanConvert(Type objectType)
{
return true;
}
}
现在,当我尝试反序列化它时,它在 ReadJson 方法的现有值参数中始终为我提供 null。它适用于 WriteJson。
如何使用 JsonConverter 将我的字符串反序列化为十进制属性?