我有一堂课ChargesDetail,正在尝试反序列化 json,如下所示。在这里,我使用的数据类型是Amount.
public class ChargesDetail
{
public double DiscountRate { get; set; }
public Amount DiscountAmount { get; set; }
}
public class Amount:IConvertible
{
private double _val = 0;
private int _decimal = 5;
public Amount()
{
}
public Amount(double amount): this()
{
// this.Value = amount;
_val = Math.Round(amount, _decimal);
}
#region IConvertible Members
// Implementation snipped
#endregion
}
我的 JSON 看起来像:
{ "DiscountRate":0.0, "DiscountAmount":0.0 }
我试图像这样反序列化:
T result = JsonConvert.DeserializeObject<ChargesDetail>(json);
它给了我一个例外,例如:
从“System.Double”到“Amount”的无效转换。
在 System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider) at System.Double.System.IConvertible.ToType(Type type, IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureType(JsonReader reader, Object value, CultureInfoculture, JsonContract contract, Type targetType)
如何将 json 反序列化为此自定义数据类型?
我无法删除 IConvertible,因为它在某些计算中会引发 System.StackOverflowException。
我无法将 Amount 类型更改为 double 类型,bcz 有 100 多个相同类型的属性并在“Amount”类中进行计算。
BIG阳
慕运维8079593
炎炎设计
GCT1015
相关分类