实际上,我想减小响应JSON的大小(代表十进制)。 现在,我有一堂课被发送了一个令人费解的时间:
public class Article{
public string Name { get; set; }
(...)
public decimal Price { get; set; }
}
价格自动发送为“ 10.000000” 但是我想保存(大约8 KB!)以将十进制格式缩小为“ 10”或“ 10.5”,并删除不必要的零。
为此,我必须编写自己的OutputFormatter,但我只能匹配整个类结构(该类具有更多类),而且我不知道如何动态格式化为Json,而只能以正确的方式来设置小数。 ..
public class CustomDecimalFormatter : OutputFormatter
{
public string ContentType { get; private set; }
public CustomDecimalFormatter()
{
ContentType = "application/json";
SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/json"));
}
protected override bool CanWriteType(Type type)
{
return type == typeof(decimal);
}
public override async Task WriteResponseBodyAsync(OutputFormatterWriteContext context)
{
var response = context.HttpContext.Response;
var decimalValue = (decimal)context.Object;
var formatted = decimalValue.ToString("F2", CultureInfo.InvariantCulture);
await response.WriteAsync(formatted);
}
}
如何制作通用的Json Response输出并仅自定义小数点?
Thx
答案 0 :(得分:1)
可能对格式化没有帮助,但是如果您想做的只是发送长度缩短的小数,为什么不创建一个公共属性以返回相同的值?像
class MyClass
{
private decimal ProductPrice {get;set;}
public string Price { get { return ProductPrice.ToString("F2", CultureInfo.InvariantCulture); } }
}
这样,您将来就可以轻松调整输出,而无需更改或影响大多数代码。