System.Text.Json IAsyncEnumerable serializacja
System.Text.Json teraz obsługuje serializowanie i deserializacji IAsyncEnumerable<T> wystąpień.
Poprzednie zachowanie
W poprzednich wersjach System.Text.Json serializowane IAsyncEnumerable<T> wystąpienia jako puste obiekty JSON ({}
). Deserializacja nie powiodła się z błędem JsonException.
Nowe zachowanie
Metody serializacji asynchronicznej wyliczają teraz wszystkie IAsyncEnumerable<T> wystąpienia na grafie obiektów, a następnie serializują je jako tablice JSON. Metody serializacji synchronicznej nie obsługują IAsyncEnumerable<T> serializacji i zgłaszają wartość NotSupportedException.
Wprowadzona wersja
.NET 6
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła. Jeśli retarget do platformy .NET 6, nie otrzymasz żadnych błędów czasu kompilacji, ale mogą wystąpić różnice w zachowaniu serializacji w czasie wykonywania.
Przyczyna wprowadzenia zmiany
Ta zmiana została wprowadzona w celu dodania obsługi odpowiedzi przesyłania strumieniowego IAsyncEnumerable<T> w usłudze ASP.NET Core MVC.
Zalecana akcja
Sprawdź, czy modele serializacji zawierają typy, które implementują IAsyncEnumerable<T> i określają, czy emitowanie wyliczenia w danych wyjściowych JSON jest pożądane. Serializacji można wyłączyć IAsyncEnumerable<T> w jeden z następujących sposobów:
- Dołącz element JsonIgnoreAttribute do właściwości zawierającej IAsyncEnumerable<T>element .
- Zdefiniuj niestandardową fabrykę konwerterów, która serializuje IAsyncEnumerable<T> wystąpienia jako puste obiekty JSON.