Share via


JsonSerializer.Serialize gera ArgumentNullException quando o parâmetro de tipo é nulo

As sobrecargas JsonSerializer.Serialize, JsonSerializer.SerializeAsync e JsonSerializer.SerializeToUtf8Bytes que têm um parâmetro de tipo Type agora geram uma ArgumentNullException sempre que null é passado a esse parâmetro.

Descrição das alterações

No .NET Core 3,1, as sobrecargas JsonSerializer.Serialize, JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken) e JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions) que têm um parâmetro Type geram uma ArgumentNullException quando null é passado ao parâmetro Type inputType, mas não quando o parâmetro Object value também é null. Do .NET 5 em diante, esses métodos sempre geram uma ArgumentNullException quando null é passado ao parâmetro Type.

Comportamento no .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 no .NET 5 e posteriores:

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

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

Versão introduzida

5,0

Motivo da alteração

Não é aceitável passar null ao parâmetro Type inputType e isso sempre deve gerar uma ArgumentNullException.

Verifique se você não está passando null ao parâmetro Type inputType desses métodos.

APIs afetadas