JsonSerializer.Serialize zgłasza wyjątek ArgumentNullException, gdy parametr typu ma wartość null

JsonSerializer.Serialize, JsonSerializer.SerializeAsynci JsonSerializer.SerializeToUtf8Bytes przeciążenia, które mają parametr typu Type teraz zgłaszać ArgumentNullException za każdym razem, gdy null jest przekazywany dla tego parametru.

Opis zmiany

W programie .NET Core 3.1 JsonSerializer.Serializeprzeciążenia , JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken)i JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions) , które mają Type parametr zgłaszany ArgumentNullException podczas null przekazywania parametru dla parametru Type inputType , ale nie wtedy, gdy Object value parametr jest również null. Począwszy od platformy .NET 5, te metody zawsze zgłaszają ArgumentNullException błąd po null przekazaniu parametruType.

Zachowanie w programie .NET Core 3.1:

// Returns a string with value "null".
JsonSerializer.Serialize(null, null);

// Returns a byte array with value "null".
JsonSerializer.SerializeToUtf8Bytes(null, null);

Zachowanie w programie .NET 5 lub nowszym:

// Throws ArgumentNullException: "Value cannot be null. (Parameter 'inputType')".
JsonSerializer.Serialize(null, null);

// Throws ArgumentNullException: "Value cannot be null. (Parameter 'inputType')".
JsonSerializer.SerializeToUtf8Bytes(null, null);

Wprowadzona wersja

5,0

Przyczyna wprowadzenia zmiany

Przekazywanie null parametru Type inputType jest niedopuszczalne i zawsze powinno zgłaszać wartość ArgumentNullException.

Upewnij się, że nie przekazujesz null parametru Type inputType tych metod.

Dotyczy interfejsów API