1

(我正在工作的项目是 C# WebAPI 2 (.net 4.6.2))

在响应模型中,该类有一个字段是十进制类型的值作为平均值。在客户端中,该字段始终保留 6 位小数,例如 123456.000000。

我添加了一个 ToString() 方法并尝试遵循JsonSerializer - 使用“N2”格式序列化小数位 以创建一个 CustomDecimalFormatConverter(见下文),但似乎根本不起作用。我该怎么做才能使客户获得具有不同小数位的正确值。我需要的格式是 {0:######.######}。

public class CustomDecimalFormatConverter : Newtonsoft.Json.JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return (objectType == typeof(decimal));
    }

    public override void WriteJson(Newtonsoft.Json.JsonWriter writer, object value,
                                   Newtonsoft.Json.JsonSerializer serializer)
    {
        writer.WriteValue(string.Format("{0:######.######}", value));
    }

    public override bool CanRead
    {
        get { return false; }
    }

    public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType,
                                 object existingValue, Newtonsoft.Json.JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

在类中有一个 ToString() 方法:

    public override string ToString()
    {
        return Newtonsoft.Json.JsonConvert.SerializeObject(this, new CustomDecimalFormatConverter()).ToString();
    }

在 webapi 的控制器中,我使用 OK(ojbect) 返回对象。

4

0 回答 0