Я ищу лучший способ вернуть большую коллекцию данных (без нумерации страниц) в json с помощью действия ASP.NET Core?
Я определил лучший способ как:
- Неблокирование: возврат асинхронный (ожидание / асинхронность), включая форматирование / сериализацию JSON
- Избегать временного размещения всей коллекции в теле метода
Я подумал о решении ниже: допустим, мы создаем наш собственный настраиваемый сериализатор json, который выполняет (через JsonWriter
: https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonWriter.htm) сериализацию асинхронно заданной IEnumerable<int>
и записывает ее непосредственно в ответ объемный поток:
[HttpGet]
public async Task<IEnumerable<int>> GetAsync()
{
using(var jsonStream = _myService.GetJsonStreamAsync())
{
await jsonStream.CopyToAsync(HttpContext.Response.Body);
}
}