Я хочу уменьшить размер моего ответа JSON, фактически представляя десятичное число.Прямо сейчас у меня есть класс, который отправляется примерно раз:
public class Article{
public string Name { get; set; }
(...)
public decimal Price { get; set; }
}
Цена автоматически отправляется как "10.000000", но я хочу сохранить (около 8 Кбайт!), Чтобы уменьшить только десятичное форматированиена «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 и настроить только десятичное?
Thx