System.Text.Json è il serializzatore JSON integrato in .NET. In .NET 10 aggiunge opzioni pensate soprattutto per chi riceve JSON da fonti esterne e vuole essere rigoroso.
Rifiutare le proprietà duplicate
Un JSON con la stessa proprietà ripetuta due volte è ambiguo: quale valore vale? Alcuni attacchi sfruttano proprio la differenza di interpretazione tra sistemi diversi. Ora si può chiedere al serializzatore di rifiutare questi documenti.
var options = new JsonSerializerOptions
{
AllowDuplicateProperties = false
};
// lancia JsonException: "importo" compare due volte
var json = "{ \"importo\": 10, \"importo\": 1000 }";
var p = JsonSerializer.Deserialize<Pagamento>(json, options);
Un profilo rigoroso già pronto
JsonSerializerOptions.Strict raccoglie le impostazioni più severe: niente proprietà sconosciute, niente duplicati, rispetto dei tipi nullable e dei parametri obbligatori dei costruttori. È un buon punto di partenza per le API pubbliche.
var ordine = JsonSerializer.Deserialize<Ordine>(json, JsonSerializerOptions.Strict);
Lettura diretta da PipeReader
Le applicazioni ad alte prestazioni, come ASP.NET Core, leggono i dati in arrivo tramite PipeReader. In .NET 10 il serializzatore può deserializzare direttamente da questa sorgente, evitando copie intermedie in memoria.
Consigli
- Usa la generazione del codice (
JsonSerializerContext) per prestazioni migliori e compatibilità con Native AOT. - Definisci opzioni condivise una sola volta e riutilizzale: crearle ogni volta è costoso.
- Per i dati in ingresso preferisci impostazioni rigorose; per quelli in uscita puoi essere più permissivo.
Commenti (0)
Nessun commento ancora.