(我正在工作的项目是 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) 返回对象。