Serializace JSON a deserializace v .NET – přehled
Obor názvů System.Text.Json poskytuje funkce pro serializaci do a deserializaci z javascriptového objektového zápisu (JSON). Serializace je proces převodu stavu objektu, tj. hodnoty jeho vlastností, do formuláře, který lze uložit nebo přenést. Serializovaný formulář neobsahuje žádné informace o přidružených metodách objektu. Deserializace rekonstruuje objekt ze serializované formy.
Návrh System.Text.Json
knihovny zdůrazňuje vysoký výkon a nízké přidělení paměti nad rozsáhlou sadou funkcí. Integrovaná podpora UTF-8 optimalizuje proces čtení a zápisu textu JSON kódovaného jako UTF-8, což je nejběžnější kódování dat na webu a souborech na disku.
Knihovna také poskytuje třídy pro práci s objektovým modelem dokumentu v paměti (DOM). Tato funkce umožňuje náhodný přístup k prvkům v souboru NEBO řetězci JSON.
Pro Visual Basic platí určitá omezení pro části knihovny, které můžete použít. Další informace naleznete v tématu Podpora jazyka Visual Basic.
Jak získat knihovnu
Knihovna je integrovaná jako součást sdíleného rozhraní pro .NET Core 3.0 a novější verze. Funkce generování zdroje je integrovaná jako součást sdílené architektury pro .NET 6 a novější verze.
Pro verze rozhraní starší než .NET Core 3.0 nainstalujte System.Text.Json balíček NuGet. Balíček podporuje:
- .NET Standard 2.0 a novější
- .NET Framework 4.6.2 a novější
- .NET 8 a novější
Obory názvů a rozhraní API
- Obor System.Text.Json názvů obsahuje všechny vstupní body a hlavní typy.
- Obor System.Text.Json.Serialization názvů obsahuje atributy a rozhraní API pro pokročilé scénáře a přizpůsobení specifické pro serializaci a deserializaci.
- Obor názvů System.Net.Http.Json obsahuje rozšiřující metody pro serializaci a deserializaci JSON dat přenášených po síti.
Důležité
System.Text.Json
nepodporuje následující rozhraní API serializace, která jste mohli použít dříve:
- Atributy z System.Runtime.Serialization oboru názvů
- Atribut System.SerializableAttribute a ISerializable rozhraní. Tyto typy se používají pouze pro binární serializaci a serializaci XML.
Reflexe versus generování zdroje
Ve výchozím nastavení shromažďuje metadata, System.Text.Json
která potřebuje pro přístup k vlastnostem objektů pro serializaci a deserializaci za běhu pomocí reflexe. Jako alternativu System.Text.Json
můžete pomocí funkce generování zdroje C# zlepšit výkon, snížit využití privátní paměti a usnadnit oříznutí sestavení, což snižuje velikost aplikace.
Další informace najdete v tématu Reflexe a generování zdroje.
Informace o zabezpečení
Informace o bezpečnostních hrozbách, které byly při návrhu zvažovány JsonSerializera jak je lze zmírnit, najdete v tématu System.Text.Json
Model hrozeb.
Bezpečnost vlákna
System.Text.Json
Serializátor byl navržen s ohledem na bezpečnost vláken. Prakticky to znamená, že po uzamčení JsonSerializerOptions se instance dají bezpečně sdílet napříč několika vlákny.
JsonDocument poskytuje neměnnou a v .NET 8 a novějších verzích reprezentaci MODELU DOM pro hodnoty JSON.