Compartilhar via


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.

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.