JsonNumberHandlingAttribute nas propriedades da coleção
Uma alteração interruptiva secundária foi introduzida no .NET 6 em relação ao atributo JsonNumberHandlingAttribute. Se você aplicar o atributo a uma propriedade que é uma coleção de valores não numéricos e tentar serializar ou desserializar a propriedade, uma InvalidOperationException será gerada. O atributo só é válido para propriedades que são coleções de tipos numéricos, por exemplo:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<int> MyList { get; set; }
Comportamento anterior
Embora tenha sido ignorado durante a serialização, JsonNumberHandlingAttribute pode ser aplicado a propriedades que eram coleções de tipos não numéricos. Por exemplo:
[JsonNumberHandling(JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString)]
public List<MyClass> MyList { get; set; }
Novo comportamento
Do .NET 6 em diante, se você se aplicar JsonNumberHandlingAttribute a uma propriedade que é uma coleção de valores não numéricos e tentar serializar ou desserializar a propriedade, uma InvalidOperationException será gerada.
Versão introduzida
.NET 6
Tipo de alteração interruptiva
Essa alteração pode afetar a compatibilidade binária.
Motivo da alteração
Essa alteração foi um efeito colateral de uma otimização de desempenho do recurso de tratamento de números.
Ação recomendada
Remova o atributo JsonNumberHandlingAttribute das propriedades de coleções incompatíveis.
APIs afetadas
Todos os métodos System.Text.Json.JsonSerializer de serialização e desserialização.