クラスはこちら
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 メソッドの existingValue パラメータで常に null が返されます。WriteJson では問題なく動作しています。
JsonConverter を使用して文字列を 10 進プロパティに逆シリアル化するにはどうすればよいですか?