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.
Ação recomendada
Verifique se você não está passando null
ao parâmetro Type inputType
desses métodos.
APIs afetadas
- System.Text.Json.JsonSerializer.Serialize(Object, Type, JsonSerializerOptions)
- System.Text.Json.JsonSerializer.Serialize(Utf8JsonWriter, Object, Type, JsonSerializerOptions)
- System.Text.Json.JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken)
- System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de