JsonSerializer.DeserializeAsyncEnumerable асинхронная обработка и поведение разорванного потока JSONC#

Место общения программистов C#
Anonymous
JsonSerializer.DeserializeAsyncEnumerable асинхронная обработка и поведение разорванного потока JSON

Сообщение Anonymous »

Поскольку мне пришлось самостоятельно решать проблему перебора результатов YEILD из метода контроллера C# IAsyncEnumerable с помощью Javascript, написав собственный итератор для обработки разрывов JSON, я превозносил достоинства метода C# JsonSerializer.DeserializeAsyncEnumerable перед командой. как делает за нас всю тяжелую работу.
Тогда мои тесты показывают, что: -

Код: Выделить всё

IAsyncEnumerable resultNames = JsonSerializer.DeserializeAsyncEnumerable(outStream, opts, cancellationSource.Token);
await foreach (SearchName name in resultNames){
Console.WriteLine(Uri.UnescapeDataString(name.familyName));
}
Итерация не начнется, пока весь буфер (resultNames) не будет получен с сервера и повторно не собран в массив с помощью DeserializeAsyncEnumerable :-(
Нужно ли мне писать свой собственный итератор и обрабатывать фрагменты JSON, как я это делал в Javascript?
Здесь, на Github, возникает аналогичный вопрос. К сожалению, когда я следую за исправлением ошибок. говорит: -
"Исправляет регрессию, введенную #51702: метод ContinueDeserialize будет возвращать значение null при частичном чтении, поэтому ни один элемент не будет выдаваться перечислителем до тех пор, пока весь поток был использован."
Мой вопрос заключается в том, как я могу заставить JsonSerializer.DeserializeAsyncEnumerable (или использовать другую стратегию C#) начать возвращать содержимое Enumerable асинхронно, как как только он будет доступен как частичный результат?

Подробнее здесь: https://stackoverflow.com/questions/766 ... son-stream

Вернуться в «C#»