型パラメーターが null の場合に JsonSerializer.Serialize によって ArgumentNullException がスローされる

Type の型パラメーターに null が渡されるたびに、そのパラメーターを持つ JsonSerializer.SerializeJsonSerializer.SerializeAsyncJsonSerializer.SerializeToUtf8Bytes のオーバーロードによって ArgumentNullException がスローされるようになりました。

変更内容

.NET Core 3.1 では、Type inputType パラメーターに null が渡されると、Type パラメーターを持つ JsonSerializer.SerializeJsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken)JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions) のオーバーロードによって ArgumentNullException がスローされますが、Object value パラメーターも null の場合はされません。 .NET 5 以降では、nullType パラメーターに渡されると、これらのメソッドによって "常に" ArgumentNullException がスローされます。

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

.NET 5 以降での動作:

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

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

導入されたバージョン

5.0

変更理由

Type inputType パラメーターに null を渡すことは許容されておらず、常に ArgumentNullException をスローする必要があります。

これらのメソッドの Type inputType パラメーターに null が渡されていないことを確認します。

影響を受ける API