JsonSerializer.Serialize genera ArgumentNullException quando il parametro di tipo è null

Gli overload JsonSerializer.Serialize, JsonSerializer.SerializeAsync e JsonSerializer.SerializeToUtf8Bytes con un parametro di tipo Type ora generano un'eccezione ArgumentNullException ogni volta che null viene passato per tale parametro.

Descrizione delle modifiche

In .NET Core 3.1, gli overload JsonSerializer.Serialize, JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken) e JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions) con un parametro Type generano un'eccezione ArgumentNullException quando null viene passato per il parametro Type inputType, ma non se anche il parametro Object value è null. A partire da .NET 5, questi metodi generano sempre un'eccezione ArgumentNullException quando null viene passato per il parametro Type.

Comportamento in .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);

Comportamento in .NET 5 e versioni successive:

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

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

Versione introdotta

5.0

Motivo della modifica

Il passaggio di null per il parametro Type inputType non è accettabile e deve sempre generare ArgumentNullException.

Assicurati di non passare null per il parametro Type inputType di questi metodi.

API interessate