Dela via


JSON-serialisering och deserialisering i .NET – översikt

System.Text.Json-namnområdet innehåller funktioner för serialisering till och deserialisering från (eller marschalling och omvänd marschalling av) JavaScript Object Notation (JSON). Serialisering är processen att konvertera tillståndet för ett objekt, det vill säga värdena för dess egenskaper, till ett formulär som kan lagras eller överföras. Det serialiserade formuläret innehåller ingen information om ett objekts associerade metoder. Deserialisering rekonstruerar ett objekt från det serialiserade formuläret.

Biblioteksdesignen System.Text.Json betonar hög prestanda och låg minnesallokering över en omfattande funktionsuppsättning. Inbyggt STÖD för UTF-8 optimerar processen för att läsa och skriva JSON-text kodad som UTF-8, vilket är den vanligaste kodningen för data på webben och filer på disk.

Biblioteket innehåller också klasser för att arbeta med en minnesintern dokumentobjektmodell (DOM). Den här funktionen ger slumpmässig åtkomst till elementen i en JSON-fil eller sträng.

För Visual Basic finns det vissa begränsningar för vilka delar av biblioteket du kan använda. Mer information finns i Visual Basic-stöd.

Hur man når biblioteket

Biblioteket är inbyggt som en del av det delade ramverket för .NET Core 3.0 och senare versioner. Källgenereringsfunktionen är inbyggd som en del av det delade ramverket för .NET 6 och senare versioner.

För tidigare ramverksversioner än .NET Core 3.0 installerar du System.Text.Json NuGet-paketet. Paketet stöder:

  • .NET Standard 2.0 och senare
  • .NET Framework 4.6.2 och senare
  • .NET 8 och senare

Namnområden och API:er

Viktigt!

System.Text.Json stöder inte följande serialiserings-API:er som du kanske har använt tidigare:

Reflektion jämfört med källgenerering

Som standardinställning samlar System.Text.Json in den metadata som behövs för att få åtkomst till egenskaper hos objekt för serialisering och deserialisering vid körning med reflektionstekniken. Som ett alternativ kan du utnyttja C#-källgenereringsfunktionen för att förbättra prestanda, minska användningen av privat minne och underlätta trimning av assembly, vilket minskar appens storlek.

Mer information finns i Reflektion kontra källgenerering.

Säkerhetsinformation

Information om säkerhetshot som övervägdes när du designade JsonSerializeroch hur de kan åtgärdas finns i System.Text.Json Hotmodell.

Trådsäkerhet

Serialiseraren System.Text.Json utformades med trådsäkerhet i åtanke. Praktiskt taget innebär detta att instanser kan delas på ett säkert sätt mellan flera trådar när de är låsta JsonSerializerOptions . JsonDocument ger en oföränderlig, och i .NET 8 och senare versioner, trådsäker, DOM-representation för JSON-värden.

Ytterligare resurser