JsonSerializer.Serialize gibt eine ArgumentNullException-Ausnahme zurück, wenn für den Typparameter NULL gilt

JsonSerializer.Serialize-, JsonSerializer.SerializeAsync- und JsonSerializer.SerializeToUtf8Bytes-Überladungen, die einen Parameter vom Typ Type aufweisen, geben ab sofort eine ArgumentNullException-Ausnahme zurück, sobald null für diesen Parameter übergeben wird.

Änderungsbeschreibung

In .NET Core 3.1 geben die JsonSerializer.Serialize-, JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken)- und JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions)-Überladungen, die über einen Type-Parameter verfügen, eine ArgumentNullException-Ausnahme zurück, wenn null für den Type inputType-Parameter übergeben wird, jedoch nicht, wenn für den Object value-Parameter auch null gilt. Ab .NET 5 geben diese Methoden immer eine ArgumentNullException-Ausnahme zurück, wenn null für den Type-Parameter übergeben wird.

Verhalten 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);

Verhalten in .NET 5 und höher:

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

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

Eingeführt in Version

5.0

Grund für die Änderung

Das Übergeben von null für den Type inputType-Parameter wird nicht akzeptiert und sollte immer eine ArgumentNullException-Ausnahme auslösen.

Achten Sie darauf, null nicht für den Type inputType-Parameter dieser Methoden zu übergeben.

Betroffene APIs