Sdílet prostřednictvím


ASP.NET základní aplikace umožňují deserializaci čísel v uvozových seznamech.

Počínaje rozhraním .NET 5 používají aplikace ASP.NET Core výchozí možnosti deserializace, jak je určeno JsonSerializerDefaults.Web. Sada Web možností zahrnuje nastavení NumberHandling na JsonNumberHandling.AllowReadingFromStringhodnotu . Tato změna znamená, že ASP.NET aplikace Core úspěšně deserializují čísla reprezentovaná jako řetězce JSON místo vyvolání výjimky.

Změna popisu

V .NET Core 3.0 – 3.1 vyvolá během deserializace hodnotu, JsonSerializerJsonException pokud v datové části JSON narazí na uvozované číslo. Čísla v uvozových číslech se používají k mapování s vlastnostmi čísel v grafech objektů. V .NET Core 3.0 – 3.1 se čísla čtou jenom z JsonTokenType.Number tokenů.

Počínaje rozhraním .NET 5 se čísla uvozovaných v datových částech JSON považují za platná ve výchozím nastavení pro aplikace ASP.NET Core. Při deserializaci čísel v uvozových číslech není vyvolána žádná výjimka.

Tip

Zavedená verze

5,0

Důvod změny

Více uživatelů požádalo o možnost pro více permisivní zpracování čísel v JsonSerializer. Tato zpětná vazba značí, že mnoho výrobců JSON (například služeb na webu) generuje čísla v uvozových číslech. Díky povolení čtení (deserializace) uvozových čísel mohou aplikace .NET tyto datové části ve výchozím nastavení úspěšně parsovat ve webových kontextech. Konfigurace je přístupná prostřednictvím JsonSerializerDefaults.Web , takže můžete zadat stejné možnosti v různých aplikačních vrstvách, například klient, server a sdílené.

Pokud je tato změna rušivá, například pokud závisíte na přísném zpracování čísel pro ověření, můžete předchozí chování znovu povolit. JsonSerializerOptions.NumberHandling Nastavte možnost na JsonNumberHandling.Stricthodnotu .

Pro ASP.NET Core MVC a webové aplikace API můžete tuto možnost Startup nakonfigurovat pomocí následujícího kódu:

services.AddControllers()
   .AddJsonOptions(options => options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.Strict);

Ovlivněná rozhraní API