Partager via


JsonSerializer.Serialize lève ArgumentNullException lorsque le paramètre de type a la valeur null

Les surcharges JsonSerializer.Serialize, JsonSerializer.SerializeAsync et JsonSerializer.SerializeToUtf8Bytes qui ont un paramètre de type Type lèvent désormais une ArgumentNullException chaque fois que null est passé pour ce paramètre.

Description de la modification

Dans .NET Core 3.1, les surcharges JsonSerializer.Serialize, JsonSerializer.SerializeAsync(Stream, Object, Type, JsonSerializerOptions, CancellationToken) et JsonSerializer.SerializeToUtf8Bytes(Object, Type, JsonSerializerOptions) qui ont un paramètre Type lèvent une ArgumentNullException quand null est passé pour le paramètre Type inputType, mais pas si le paramètre Object value est également null. À compter de .NET 5, ces méthodes lèvent toujours une ArgumentNullException quand null est passé pour le paramètre Type.

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

Comportement dans .NET 5 et versions ultérieures :

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

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

Version introduite

5,0

Raison du changement

Il n’est pas acceptable de passer dans null pour le paramètre Type inputType. Une ArgumentNullException doit toujours être levée.

Assurez-vous que vous ne passez null pour le paramètre Type inputType de ces méthodes.

API affectées