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
- U výchozího, samostatného nebo samostatného JsonSerializer nebo JsonSerializerOptions.
- Technicky se nejedná o zásadní změnu, protože je scénář více omezující místo více omezující (to znamená, že je úspěšné vynucení čísla z řetězce JSON místo vyvolání výjimky). Vzhledem k tomu, že se jedná o významnou změnu chování, která ovlivňuje mnoho aplikací ASP.NET Core, je zde zdokumentovaná.
- Metody HttpClientJsonExtensions.GetFromJsonAsync rozšíření HttpContentJsonExtensions.ReadFromJsonAsync používají Web také sadu možností serializace.
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é.
Doporučená akce
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);